java文件字符集
我有一个应用程序,它处理一些文本,然后将其保存到文件中 当我从NetBeans IDE运行它时,java文件字符集,java,windows,file,character-encoding,Java,Windows,File,Character Encoding,我有一个应用程序,它处理一些文本,然后将其保存到文件中 当我从NetBeans IDE运行它时,System.out和PrintWriter工作正确和非ACSII字符都正确显示/保存。但是,如果我从Windows7命令行(在本例中使用cp1250(中欧)编码)运行JAR,屏幕输出和保存的文件将被破坏 我试图将UTF-8放入PrintWriter的构造函数中,但没有任何帮助……而且它也不会影响System.out,即使这样,它也会被破坏 为什么它在IDE中工作而不是在cmd.exe中工作? 我知道
System.out
和PrintWriter
工作正确和非ACSII字符都正确显示/保存。但是,如果我从Windows7命令行(在本例中使用cp1250
(中欧)编码)运行JAR,屏幕输出和保存的文件将被破坏
我试图将UTF-8
放入PrintWriter
的构造函数中,但没有任何帮助……而且它也不会影响System.out
,即使这样,它也会被破坏
为什么它在IDE中工作而不是在cmd.exe中工作?
我知道
System.out
有一些问题,但为什么输出文件也会受到影响
如何解决此问题?我也遇到了同样的问题。 实际原因是,当您的代码在NetBeans环境中运行时,NetBeans会自动设置系统的属性 您可以看到,当您使用NetBeans运行代码时,下面的代码可能会打印“UTF-8”。但当您使用cmd运行它时,您肯定会看到“cp1256” 您应该注意,虽然使用“setProperty”会更改“getProperty”函数的输出,但它不会对输入/输出产生任何影响。(因为它们都是在调用主函数之前设置的。) 考虑到这一背景,当您想从文件中读取并写入文件时,最好使用以下代码:
File f = new File(sourcePath);
阅读:
InputStreamReader isr = new InputStreamReader(
new FileInputStream(f), Charset.forName("UTF-8"));
对于写作(我没有测试过):
主要区别在于这些类在其构造函数中获得所需的字符集,但FileWrite和PrintWrite之类的类则没有。
我希望这对你有用。我也有同样的问题。 实际原因是,当您的代码在NetBeans环境中运行时,NetBeans会自动设置系统的属性 您可以看到,当您使用NetBeans运行代码时,下面的代码可能会打印“UTF-8”。但当您使用cmd运行它时,您肯定会看到“cp1256” 您应该注意,虽然使用“setProperty”会更改“getProperty”函数的输出,但它不会对输入/输出产生任何影响。(因为它们都是在调用主函数之前设置的。) 考虑到这一背景,当您想从文件中读取并写入文件时,最好使用以下代码:
File f = new File(sourcePath);
阅读:
InputStreamReader isr = new InputStreamReader(
new FileInputStream(f), Charset.forName("UTF-8"));
对于写作(我没有测试过):
主要区别在于这些类在其构造函数中获得所需的字符集,但FileWrite和PrintWrite之类的类则没有。
我希望这对您有用。在我的语言环境中,我更改cmd.exe属性中的字体。之后,带有非ASCII符号的控制台输出看起来很好。可能这有助于您解决控制台问题,但文件问题有所不同-数据已从web下载,在从字节到字符串的处理过程中,我忘记了“考虑”字符集…在我的语言环境中,我更改了cmd.exe属性中的字体。之后,带有非ASCII符号的控制台输出看起来很好。可能这有助于您解决控制台问题,但文件问题有所不同-数据是从web下载的,在从字节到字符串的处理过程中,我忘记了“考虑”字符集。。。