我在表中包含字符串“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)。 –