java 将字符串编码为UTF

标签 java encoding utf-8

我想在 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/

相关文章:

MySql varchar 从 Latin1 更改为 UTF8

java - Retrofit2+RxJava 在 OnNext() 中向 Model 类返回 null

java - Web 服务中的 UTF-8 阿拉伯语编码

email - 如何从 shell 脚本通过邮件发送特殊字符?

python - 语法错误: python Arabic encoding

python - 使用 Python pathlib 处理非 UTF-8 Posix 文件名?

json - 使用 jq 从 JSON 中提取 UTF 未编码的二进制数据

java - main方法可以放在父类中吗?如果是这样,可以在该 main 方法中实例化子对象吗?

java - foreach 循环中的每个循环?

java - itext 使用 Java 在 pdf 中创建 XMP