为啥kafka接收的中文变成了unicode编码,怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥kafka接收的中文变成了unicode编码,怎么解决相关的知识,希望对你有一定的参考价值。

参考技术A txt文件中转换另存改码~追问

您好!您说的txt是什么意思??

追答

windows中默认的文本文档,只要是基本微软的windows系统,都有这txt格式,不行的话右键单击自行建立一个空的文本文档,扩展名为txt,存储文件的时候编码选你需要的,直接操作下,不行再问!

追问

我是lunix系统搭建的elk+kafka,java项目的logback-spring.xml配置写日志实时到kafka,

java如何把以unicode编码形式的字符串变成编码前的形式

我有一个字符串,是unicode编码形式的,如String s1 = "\\u9996";注意这个字符串的长度是6而不是1,也就是说它并不是一个字符,而是6个字符串
那么如何把它变成编码前的那个字符呢,实际上\u9996就是“首”这个字的unicode编码形式
不要仅仅局限于URLEncoder啊

\u9996是标准的unicode编码表现形式
打开你的Eclipse,然后查看Character这个类的注释,有下面的一段话:

The set of characters from U+0000 to U+FFFF is sometimes referred to as the
Basic Multilingual Plane (BMP)....

不用转,直接输出结果即可,系统会自动转换。举例:

System.out.println("\\u0061\\u0062\\u6c49\\u5b57");

结果就是:ab汉字。

参考技术A Unicode转 汉字字符串最简单的方式就是直接获取。比如
String cnStr = "\\u9996";
System.out.println(cnStr); 即可获取对应的汉字字符 “首”;
但是每次从输出就不方便了,可以使用以下方法来做转换,直接获取。
代码片段如下:
public static String unicodeToString(String str)
Pattern pattern = Pattern.compile("(\\\\u(\\pXDigit4))");
Matcher matcher = pattern.matcher(str);
char ch;
while (matcher.find())
ch = (char) Integer.parseInt(matcher.group(2), 16);
str = str.replace(matcher.group(1), ch + "");

return str;

直接调用这个方法就可以把unicode转换成中文了!
参考技术B 1、URLEncoder.encode("首","unicode");这个方法是把“首”字将按unicode进行编码得到:%FE%FF%99%96
2、URLDecoder.decode("%FE%FF%99%96","unicode")这个是方法是将%FE%FF%99%96按照unicode编码集进行解码。
3、不知道你是用什么方法将“首”字安unicode编译成“\\u9996”?!追问

不要仅仅局限于URLEncoder啊

\u9996是标准的unicode编码表现形式
打开你的Eclipse,然后查看Character这个类的注释,有下面的一段话:

The set of characters from U+0000 to U+FFFF is sometimes referred to as the
Basic Multilingual Plane (BMP)....

参考技术C unicode还分很多种 ~~~

String s="\\\\u"+String.valueOf((int)(char)'首'); 试试

String s1="9996"); //去掉\\u
System.out.println((char)(byte)Integer.parseInt(s1));本回答被提问者采纳

以上是关于为啥kafka接收的中文变成了unicode编码,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

电脑默认编码变成unicode怎么办,汉字全部是乱码

python json.dumps后utf-8编码变成了unicode编码

java如何把以unicode编码形式的字符串变成编码前的形式

为啥 Flask 将这个变量作为 unicode 而不是作为数组接收?

当默认编码为 ASCII 时,为啥 Python 会打印 unicode 字符?

为啥我的 Perl 程序使用 Tie::File 和 Unicode/UTF-8 编码失败?