感谢:https://www.cnblogs.com/austinspark-jessylu/p/6873198.html
感谢:https://blog.csdn.net/chengmodelong/article/details/42870485
感谢:http://blog.sina.com.cn/s/blog_980b43cf0102xdd9.html
Question: 问题来源
在调试Java端Mina服务器 , 用TCP连接的时候 , 由于编码问题 , 遇到中文服务器就无法解析 , 解决办法 , 在C#端采用中文转Unicode , Mina端服务器采用Unicode解析中文就好了.
这是Java里面Unicode和汉字互相转换
package com.sun;
public class Snippet {
public static void main(String[] args) {
String cn = "你";
System.out.println(cnToUnicode(cn));
// 字符串 : \u5f00\u59cb\u4efb\u52a1 ,由于 \ 在java里是转义字符,要写出下面这种形式
String unicode = "\\u4f60";
System.out.println(unicodeToCn(unicode));
}
private static String unicodeToCn(String unicode) {
/** 以 \ u 分割,因为java注释也能识别unicode,因此中间加了一个空格*/
String[] strs = unicode.split("\\\\u");
String returnStr = "";
// 由于unicode字符串以 \ u 开头,因此分割出的第一个字符是""。
for (int i = 1; i < strs.length; i++) {
returnStr += (char) Integer.valueOf(strs[i], 16).intValue();
}
return returnStr;
}
private static String cnToUnicode(String cn) {
char[] chars = cn.toCharArray();
String returnStr = "";
for (int i = 0; i < chars.length; i++) {
returnStr += "\\u" + Integer.toString(chars[i], 16);
}
return returnStr;
}
}
这是C#端的汉字与 Unicode互相转换.
/// <summary>
/// <summary>
/// 字符串转Unicode
/// </summary>
/// <param name="source">源字符串</param>
/// <returns>Unicode编码后的字符串</returns>
public static string String2Unicode(string source)
{
byte[] bytes = Encoding.Unicode.GetBytes(source);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < bytes.Length; i += 2)
{
stringBuilder.AppendFormat("\\u{0}{1}", bytes[i + 1].ToString("x").PadLeft(2, '0'), bytes[i].ToString("x").PadLeft(2, '0'));
}
return stringBuilder.ToString();
}
/// <summary>
/// Unicode转字符串
/// </summary>
/// <param name="source">经过Unicode编码的字符串</param>
/// <returns>正常字符串</returns>
public static string Unicode2String(string source)
{
return new Regex(@"\\u([0-9A-F]{4})", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace(
source, x => string.Empty + Convert.ToChar(Convert.ToUInt16(x.Result("$1"), 16)));
}
这是我在服务器端用的接收用户发送的消息,从Unicode转成汉字用的一个方法,
image.png
image.png
网友评论