簡體   English   中英

txt文件中的字符°編碼和可視化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM