我從屬性文件中獲得一個字符串,其中uni-code存儲爲-uni-000A
,實際上它是\u000A
。當我在另一個文件中寫入\u000A
時,我想寫入其相應的Unicode字符,即\n
,但我的程序正在寫入\u000A
而不是\n
。如何用unicode字符替換ascii字符?
任何人都可以請告訴如何取代-uni-000A
到\u000A
並告訴程序以獲得其相應的字符?
我從屬性文件中獲得一個字符串,其中uni-code存儲爲-uni-000A
,實際上它是\u000A
。當我在另一個文件中寫入\u000A
時,我想寫入其相應的Unicode字符,即\n
,但我的程序正在寫入\u000A
而不是\n
。如何用unicode字符替換ascii字符?
任何人都可以請告訴如何取代-uni-000A
到\u000A
並告訴程序以獲得其相應的字符?
首先嚐試忘記源文件的編碼 - 一旦讀取了字符串,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的相應字節寫入你的文件。
我使用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);
希望它能幫助。感謝大家提供寶貴的答案和意見。
你目前的代碼是什麼? – fge
http://stackoverflow.com/questions/13012871/converting-ascii-code-to-char-in-java – Babel
只有'\ u000A' LF unicode或所有其他問題纔會出現問題嗎?如果你嘗試打印一些其他的unicode,如'\ u0940',它能正常工作嗎? – PopoFibo