gpt4 book ai didi

java - 文件字符集

转载 作者:可可西里 更新时间:2023-11-01 10:50:03 26 4
gpt4 key购买 nike

我有一个应用程序,它处理一些文本然后将其保存到文件。

当我从 NetBeans IDE 运行它时,System.outPrintWriter 都可以正常工作,并且可以正确显示/保存非 ACSII 字符。但是,如果我从 Windows 7 命令行(在这种情况下使用 cp1250 (central european) 编码)运行 JAR,屏幕输出和保存的文件就会损坏。

我试图将 UTF-8 放入 PrintWriter 的构造函数中,但它没有帮助......而且它不会影响 System.out,即使在此之后它也会被破坏。

为什么它在 IDE 中运行而不在 cmd.exe 中运行?
我会理解 System.out 有一些问题,但为什么输出文件也会受到影响?

我该如何解决这个问题?

最佳答案

我刚刚遇到了同样的问题。实际原因是因为当您的代码在 NetBeans 环境中运行时,NetBeans 会自动设置系统的属性。

您可以看到,当您使用 NetBeans 运行代码时,下面的代码可能会打印“UTF-8”。但是当你用 cmd 运行它时,你肯定会看到“cp1256”。

System.getProperty("file.encoding"); 

您应该注意到,虽然使用“setProperty”会更改“getProperty”函数的输出,但它不会对输入/输出产生任何影响。 (因为它们都是在调用主函数之前设置的。)

考虑到这个背景,当你想从文件中读取和写入文件时,最好使用下面的代码:

    File f = new File(sourcePath);

阅读:

InputStreamReader isr = new InputStreamReader(
new FileInputStream(f), Charset.forName("UTF-8"));

和写作(我还没有测试过):

OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(f), Charset.forName("UTF-8"));

主要区别在于这些类在其构造函数中获得必需的字符集,但 FileWrite 和 PrintWrite 等类则没有。我希望这对你有用。

关于java - 文件字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7839161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com