在Java中将UTF-16 Unicode字符转换为UTF-8

21

当我得到JSON时,其中的\u003c和\u003e代替了<和>。我想在Java中将它们转换回UTF-8。任何帮助都将不胜感激。谢谢。


3c和3e <>。你需要转换什么吗? - Hot Licks
2
你使用的是哪个JSON解析器? - McDowell
事实上,解码JSON字符串字面量的正确方法是使用JSON解析器。不要尝试自己解码转义序列,因为你很可能无法完全正确地处理它。JSON解析器将为您提供一个标准的Unicode字符串对象;如果您确实需要将其转换为UTF-8编码的字节,可以使用getBytes方法,但我不确定这是否真正相关。 - bobince
如果您正在使用StringEntity,您应该查看这个答案 - JJD
3个回答

13

我也使用过这种技术,但它不起作用。它返回的是我传递的相同字符串...尽管在测试应用程序中它可以工作。以下是我正在使用的内容。public static String unicodeToUTF8(String unicodeStr) { // 从Unicode转换为UTF-8 byte[] utf8 = unicodeStr.getBytes("UTF-8"); String UTF8Str=""; UTF8Str = new String(utf8, "UTF-8"); return UTF8Str; } - Mubbasher Khaliq
测试应用程序中正常工作意味着应用程序代码存在问题,请仔细检查您的应用程序中unicodeToUTF8函数。 - Hemant Metalia
我已经多次检查过测试和实际应用程序,file.encoding 都是相同的,即 cp1252。可能的选项是什么? - Mubbasher Khaliq
1
一个使用String string = "\u003c"的测试应用程序能够工作的原因是\u003c就像\n一样是编译器转义。如果您想要测试JSON输入,您需要添加另一个级别的转义:String string ="\\u003c";为了处理这些内容,您需要使用一个可以自动处理这些转义的库。您的JSON解析器应该能够做到这一点。 - bames53

2
你可以尝试将字符串转换为字节数组。
byte[] utfString = str.getBytes("UTF-8") ;

通过指定UTF-8编码,将其转换回字符串对象,如下所示:

str = new String(utfString,"UTF-8") ;

0

你也可以尝试这个

String s = "Hello World!";
String convertedInUTF8 = new String(s, StandardCharsets.US_ASCII);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接