我从属性文件中获取一个String,其中uni-code存储为-uni-000A
,实际上是\u000A
。当我在另一个文件中写这个\u000A
时,我想写出相应的unicode字符,即\n
,但我的程序正在写\u000A
而不是\n
。
有人可以告诉我们如何将-uni-000A
替换为\u000A
并告诉程序获取相应的字符吗?
答案 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
类的方法解决了这个问题。
这是一个两步过程:
\u
StringEscapeUtils.escapeJava("\\u")
字符
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);
希望它有所帮助。感谢大家的宝贵回答和评论。