gpt4 book ai didi

java - 从命令行和代码设置系统属性有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:33 27 4
gpt4 key购买 nike

问题是:我的代码中有一些中文,我正在将其写入sqlite。

当我在 eclipse 中运行我的程序并从 sqlite 中读取字符串时,它工作正常。但是当我将项目打包到一个 jar 并在命令行中运行它时。 sqlite读出来的中文字符串是不可读的。

经过一些尝试,我知道问题出在 file.encoding 系统属性上。当我使用命令运行 jar 时:java -Dfile.encoding=UTF-8 -jar TK.jar,它可以很好地处理中文单词,但是如果我在代码中设置系统属性,例如:System.setProperty("file.encoding", "UTF-8");,不行。

那么,从命令行和代码设置系统属性有什么区别?谁能告诉我如何在代码中设置 file.encoding 系统属性?

非常感谢!

总结:

请记住在使用 String.getBytes() 以及 new String() 时添加字符集,以避免在不同语言下运行程序时中文或日文输出不可读环境。

最佳答案

在您的代码中的某处,您可能依赖于默认字符集 UTF-8。例如,当您在未指定字符集的情况下调用 String.getBytes() 时,Java 将使用默认字符集。如果您始终需要 UTF-8,则在调用 String.getBytes() 时指定:

byte[] utf8bytes = text.getBytes("UTF-8");

此外,如果要读取具有特定字符编码的文件,请指定字符编码而不是依赖默认设置。例如:

InputStream is = new FileInputStream("utf8file.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"));

// Read text, file will be read as UTF-8
String line = in.readLine();

in.close();

关于java - 从命令行和代码设置系统属性有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19362421/

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