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

时间:2014-02-24 07:17:56

标签: java unicode

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

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

2 个答案:

答案 0 :(得分:1)

首先尝试忘记源文件的编码 - 一旦读取了String,java中的每个字符都被视为相同。

现在您的问题是将String中的字符写入特定编码的字节。为此,您可以使用其中一个不同的Writer实现。假设您需要用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的相应字节写入您的文件。

答案 1 :(得分:0)

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

这是一个两步过程:

  1. 使用\u
  2. 首先转义StringEscapeUtils.escapeJava("\\u")字符
  3. 每当您想要实际的unicode表示时,请使用StringEscapeUtils.unescapeJava()方法。
  4. 在此处提供我的示例代码:

    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);
    

    希望它有所帮助。感谢大家的宝贵回答和评论。