我在表中包含字符串「Address Pippo p.2°」的字段。 我的程序讀取此值,並將其寫入txt文件,但輸出是:字符在txt文件中的編碼和可視化
「地址皮波第2頁A°」(A是不需要的)
我有一個問題,因爲txt文件是位置文件。我使用這些Java構造打開文件: FileWriter fw = new FileWriter(file,true); pw = new PrintWriter(fw);
我想寫沒有奇怪字符的字符串
對我有幫助嗎?
在此先感謝
我在表中包含字符串「Address Pippo p.2°」的字段。 我的程序讀取此值,並將其寫入txt文件,但輸出是:字符在txt文件中的編碼和可視化
「地址皮波第2頁A°」(A是不需要的)
我有一個問題,因爲txt文件是位置文件。我使用這些Java構造打開文件: FileWriter fw = new FileWriter(file,true); pw = new 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字符。
「任何配置爲特定JVM實例的默認值」:[無論](https://en.wikipedia.org/wiki/Whatever_(俚語))是操作語。它隨着系統,用戶和用戶的不同而不同。它可能正是想要的,但很少。 –
你是什麼意思「txt文件是位置文件」? – DodgyCodeException
你沒有用它編寫的字符編碼讀取它,因此,[mojibake](https://en.wikipedia.org/wiki/Mojibake)。 –