gpt4 book ai didi

java 将字符串编码为UTF

转载 作者:行者123 更新时间:2023-12-01 09:59:53 24 4
gpt4 key购买 nike

我想在 Windows 盒子上显示属性文件中的字符(中文或其他语言)。

假设我从系统属性中读取了一个属性 server.location=上海的位置,该属性是在服务器启动时设置的。

我尝试这样做

new String(locationStr.getBytes(System.getProperty("file.encoding")), "UTF-8");

这适用于 Linux,但无法在 Windows 上运行。

以下是摘要片段,没有如何设置系统属性的语法

URL fileURL = new URL("file:filePathAndName");
InputStream iStream = fileURL.openStream () ;
Properties prop = new Properties();
prop.load(iStream);
//Enumerate over prop and set System.setProperty (key, value);

将属性读取为 System.getProperty("server.location")

这是针对所有属性文件集中完成的,因此在读取或设置特定编码时修改任何内容可能会影响其他文件,因此不建议。

还尝试使用URLEncoder.encode进行编码,但没有帮助。我没有看到任何特定的编码集。 Java 使用 UTF-16,在 Windows 上编码为“Cp1252”。我在这里缺少什么?

任何有助于完成这项工作或提供一些帮助的帮助都将受到赞赏。还尝试解决现有问题,但答案并不直接适用,因此产生了新问题。谢谢

编辑:无法将获取的字符串转换为 UTF-8。以某种方式说服人们以 Joop 提到的方式读取属性并正确检索字符串

最佳答案

java中的

String/char/Reader/Writer包含Unicode文本。二进制数据、byte[]、InputStream/OutputStream 必须与可转换为文本、字符串的编码关联。

您的属性文件似乎采用 UTF-8 格式。然后在加载属性时指定固定编码。

InputStream iStream = fileURL.openStream();
Reader reader = new BufferedReader(new InputStreamReader(iStream, StandardCharsets.UTF_8));
Properties prop = new Properties();
prop.load(reader);

这里,InputStreamReader 通过指定输入流编码的转换来桥接从二进制数据到 (Unicode) 文本的转换。

关于java 将字符串编码为UTF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36895143/

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