java - 如果我从文件中读取,如何将 ASCII(Unicode Escaped)中的字符串转换为 Unicode(UTF-8)?

标签 java unicode encoding utf-8 escaping

编辑:

我正在从文件中读取该字符串,因此本主题实际上是关于以下问题:

我有这个字符串,它是从文件中收到的字符串的 equal():

"Diogo Pi\\u00e7arra - Tu E Eu"

如何让 Java 将结果字符串“\u00e7”读取为“ç”字符?

发生这种情况是因为该文件未以 UTF-8 编码,而是以转义的 Unicode 编码,因此我将“\u00e7”读取为字符串而不是 Unicode 字符。所以我需要一个在运行时解析它的函数。我可以遍历 .replace() 函数来解析这个但是......


老问题(在我没搞明白是怎么回事之前问错了,请忽略后面的文字):

我有以下字符串:

final String str = "Diogo Pi\u00e7arra - Tu E Eu";

我想把它转换成:

"Diogo Piçarra - Tu E Eu"

我已经尝试了一切,从 Apache Lang 工具 unescape 函数,到

new String(str.getBytes("UTF-16"), "UTF-16")

new String(str.getBytes("UTF-8"), "UTF-8")

new String(str.getBytes("UTF-16"))

new String(str.getBytes("UTF-8"))

但是没有任何效果...!

接下来我可以尝试什么?

谢谢!

最佳答案

我让它为我工作的方式,从一个明确写入转义 unicode 的文件中读取:

    BufferedReader reader1 = new BufferedReader(new InputStreamReader(file.getInputStream()));
    byte c;
    while ((c = (byte) reader1.read()) != -1) {
        output.append(new String(new byte[] { c }, "UTF-8"));
    }
    return StringEscapeUtils.unescapeJava(output.toString());

这是可行的,因为

StringEscapeUtils.unescapeJava("Diogo Pi\\u00e7arra - Tu E Eu")
results in "Diogo Piçarra - Tu E Eu"

关于java - 如果我从文件中读取,如何将 ASCII(Unicode Escaped)中的字符串转换为 Unicode(UTF-8)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31818269/

相关文章:

java - 编码jboss 7

Java Swing : GUI is not updating some properties

java - 使用 CORS 的跨域 ajax 请求

android - 如何在 Android 上的 HttpPost 中发送 unicode 字符

javascript - 如何在 JavaScript 中将肤色应用于表情符号?

java - 如何在java中通过FTP编写 "UTF-16"编码文件

java - AsyncTask新手问题

java - 从java中的控制台读取密码

css - Unicode 字符特定的 CSS - 一个想法

javascript - 将表情符号转换为 Javascript 编码?