Java 如何用unicode字符替换ascii字符?

Java 如何用unicode字符替换ascii字符?,java,unicode,Java,Unicode,我从属性文件中得到一个字符串,其中uni-code存储为-uni-000A,实际上是\u000A。当我在另一个文件中写入此\u000A时,我想写入其相应的unicode字符,即\n,但我的程序正在写入\u000A而不是\n 有谁能告诉我如何将-uni-000A替换为\u000A,并告诉程序获取相应的字符吗?首先,试着忘记源文件的编码-一旦你读取了一个字符串,java中的每个字符都会被同等对待 现在的问题是将字符串中的字符写入特定编码的字节。为此,您可以使用不同的编写器实现之一。假设您需要使用Un

我从属性文件中得到一个字符串,其中uni-code存储为
-uni-000A
,实际上是
\u000A
。当我在另一个文件中写入此
\u000A
时,我想写入其相应的unicode字符,即
\n
,但我的程序正在写入
\u000A
而不是
\n


有谁能告诉我如何将
-uni-000A
替换为
\u000A
,并告诉程序获取相应的字符吗?

首先,试着忘记源文件的编码-一旦你读取了一个字符串,java中的每个字符都会被同等对待

现在的问题是将字符串中的字符写入特定编码的字节。为此,您可以使用不同的编写器实现之一。假设您需要使用Unicode编写字符:

    String myString = ...; /* Wherever it comes from */
    Writer writer = new OutputStreamWriter(
new FileOutputStream("/home/shekhar/myFile"), Charset.forName("UTF-8"));
    writer.write(myString);
    writer.close();

这应该确保将8位Unicode对应的字节写入您的文件。

我使用
commons lang
中的
StringEscapeUtils
类的方法解决了这个问题

这是一个分两步的过程:

  • 使用
    StringEscapeUtils.escapeJava(“\\u”)
  • 每当需要实际的unicode表示时,请使用
    StringEscapeUtils.unescapeJava()
    方法
  • 在这里给出我的示例代码:

    String unic = "__UNICODE__000A";
    String replaced = unic.replaceAll("__UNICODE__", StringEscapeUtils.escapeJava("\\u"));
    
    // below line prints \u000A
    System.out.println("replaced = " + replaced);
    String finalVal = StringEscapeUtils.unescapeJava(replaced);
    
    // below line prints actual \n character
    System.out.println("final = " + finalVal);
    

    希望能有帮助。感谢各位宝贵的回答和评论。

    您当前的代码是什么?问题是仅出现在
    \u000A
    LF unicode还是其他所有问题?如果您尝试打印一些其他unicode,如
    \u0940
    ,它工作正常吗?