【问题标题】:Convert UTF-16 unicode characters to UTF-8 in java在java中将UTF-16 unicode字符转换为UTF-8
【发布时间】:2012-02-22 22:33:03
【问题描述】:

当我得到 JSON 时,会有 \u003c 和 \u003e 而不是 。我想在java中将它们转换回utf-8。任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 3c 和 3e <>。你需要转换任何东西来做什么?
  • 你使用的是什么 JSON 解析器?
  • 确实,解码 JSON 字符串文字的正确方法是使用 JSON 解析器。不要尝试自己解码转义序列,因为您可能不会完全正确。 JSON 解析器会给你一个标准的 Unicode String 对象;如果您确实需要将其转换为 UTF-8 编码的字节,您可以使用 getBytes,但我不确定这是否真的相关。
  • 如果你使用StringEntitiy,你应该看看这个answer

标签: java json unicode utf-8


【解决方案1】:
try {
    // Convert from Unicode to UTF-8
    String string = "\u003c";
    byte[] utf8 = string.getBytes("UTF-8");

    // Convert from UTF-8 to Unicode
    string = new String(utf8, "UTF-8");
} catch (UnsupportedEncodingException e) {
}

参考http://www.exampledepot.com/egs/java.lang/unicodetoutf8.html

【讨论】:

  • 我也使用过这种技术,但它不起作用。它返回我通过的相同字符串......虽然它在测试应用程序中工作。下面是我正在使用的。 public static String unicodeToUTF8(String unicodeStr) { // 从 Unicode 转换为 UTF-8 byte[] utf8 = unicodeStr.getBytes("UTF-8");字符串 UTF8Str=""; UTF8Str = new String(utf8, "UTF-8");返回 UTF8Str; }
  • 它在测试应用程序中工作意味着应用程序代码中存在一些问题,请检查您的应用程序中的函数unicodeToUTF8
  • 我已经检查了很多时间,并且在测试和实时应用程序中 file.encoding 是相同的,即 cp1252。可能的选择是什么?
  • 使用String string = "\u003c" 的测试应用程序起作用的原因是因为\u003c 是编译器转义,就像'\n' 是编译器转义一样。如果您想测试 JSON 输入,您必须添加额外的转义级别:String string = "\\u003c"; 为了处理这些,您需要一个库来为您处理这些转义。您的 JSON 解析器应该能够做到这一点。
【解决方案2】:

您可以尝试将字符串转换为字节数组

byte[] utfString = str.getBytes("UTF-8") ;

并通过指定 UTF-8 编码(如

)将其转换回字符串对象
str = new String(utfString,"UTF-8") ;

【讨论】:

    猜你喜欢
    • 2010-09-21
    • 2017-09-24
    • 2011-09-06
    • 1970-01-01
    • 2015-09-21
    • 2015-09-19
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多