2014-02-24 87 views
0

我從屬性文件中獲得一個字符串,其中uni-code存儲爲-uni-000A,實際上它是\u000A。當我在另一個文件中寫入\u000A時,我想寫入其相應的Unicode字符,即\n,但我的程序正在寫入\u000A而不是\n如何用unicode字符替換ascii字符?

任何人都可以請告訴如何取代-uni-000A\u000A並告訴程序以獲得其相應的字符?

+0

你目前的代碼是什麼? – fge

+0

http://stackoverflow.com/questions/13012871/converting-ascii-code-to-char-in-java – Babel

+0

只有'\ u000A' LF unicode或所有其他問題纔會出現問題嗎?如果你嘗試打印一些其他的unicode,如'\ u0940',它能正常工作嗎? – PopoFibo

回答

1

首先嚐試忘記源文件的編碼 - 一旦讀取了字符串,java中的每個字符都被視爲相同。

現在您的問題是將字符串中的字符寫入特定編碼的字節中。爲此,您可以使用其中一個不同的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的相應字節寫入你的文件。

0

我使用StringEscapeUtilscommons-lang中的方法解決了這個問題。

其過程分爲兩個步驟:

  1. 首先逃生\u使用StringEscapeUtils.escapeJava("\\u")
  2. 每當你想需要實際的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); 

希望它能幫助。感謝大家提供寶貴的答案和意見。