[英]character ° encoding and visualization in txt file
我在表中的一個字段中包含字符串“ Address Pippo p.2°”。 我的程序讀取此值並將其寫入txt文件,但輸出為:
“地址Pippo p.2°”(不需要)
我有問題,因為txt文件是位置文件。
我使用以下Java指令打開文件:FileWriter fw = new FileWriter(file,true); pw =新的PrintWriter(fw);
我想寫沒有奇怪字符的字符串
對我有幫助嗎?
提前致謝
嘗試像這樣將字符串編碼為UTF-8,
File file = new File("D://test.txt");
FileWriter fw = new FileWriter(file, true);
PrintWriter pw = new PrintWriter(fw);
String test = "Address Pippo p.2 °";
ByteBuffer byteBuffer = Charset.forName("UTF-8").encode(test);
test = StandardCharsets.UTF_8.decode(byteBuffer).toString();
pw.write(test);
pw.close();
Java使用Unicode。 當您將文本寫入文件時,它會使用特定的字符編碼進行編碼。 如果未明確指定,它將使用“系統默認編碼”,即為特定JVM實例配置為默認的編碼。 您需要知道用來編寫文件的編碼方式。 然后,您需要使用相同的編碼來讀取和顯示文件內容。 您看到的有趣字符可能是由於使用UTF-8編寫文件,然后嘗試使用Windows-1252(“ ANSI”)編碼在記事本中讀取和顯示該文件。
確定所需的編碼,並在讀取和寫入時都堅持使用該編碼。 要使用Windows-1252編寫,請使用:
Writer w = new OutputStreamWriter(new FileInputStream(file, true), "windows-1252");
如果使用UTF-8編寫,請告訴記事本您希望它讀取UTF-8中的文件。 一種方法是在文件的開頭寫入字符'\\ uFEFF'(字節順序標記)。
如果您使用的是UTF-8,請注意,非ASCII字符將使后面的字節丟失。 因此,例如,如果電話字段必須始終從字節位置200開始,那么在地址字段中包含非ASCII字符之前,電話字段將從字節位置201或202開始。使用Windows-1252編碼,您會獲得沒有這個問題,但是編碼不能編碼所有Unicode字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.