gpt4 book ai didi

java - 转义 - 从 Java 属性读取时的字符

转载 作者:行者123 更新时间:2023-12-02 01:57:31 25 4
gpt4 key购买 nike

我试图从 Java 属性文件中读取 - 值,但它一直给我值 â 和类似 epsilon 的东西(粘贴时出现问题)

我在逃避“方面没有任何问题,但似乎无论我做什么 - 都会给我带来问题。我尝试过 '-' 和\- 和\\- 但似乎没有任何效果。

@Test
public void readFromProperties() throws IOException {
Properties options = new Properties();

FileInputStream in = new FileInputStream(Configs.optionsFi);
negComments.load(in);
in.close();

String option = options.getProperty("OPTION8");
System.out.println(negComment);
}

属性文件:

OPTION8=asdf asdf asdf asdf asdf – \"asdfasdf\"

System.out.println结果:

asdf asdf asdf asdf asdf âepsilonlikething "asdfasdf"

最佳答案

属性文件中的 字符不是普通的破折号 ( 'HYPHEN-MINUS' (U+002D) ),而是 'EN DASH' (U+2013) .

load(InputStream inStream) 的文档明确指定:

The input stream is in a simple line-oriented format as specified in load(Reader) and is assumed to use the ISO 8859-1 character encoding; that is each byte is one Latin1 character.

您的属性文件采用 UTF-8 格式,因此您会遇到字符编码错误。

有 3 种方法可以解决该问题:

  1. 假设您想要普通的破折号,请将 替换为 -
    并确保将文件保存为 ISO 8859-1 又名 Latin1 又名 Windows-1252。

  2. 对字符进行编码,即将替换为\u2013
    并确保将文件保存为 ISO 8859-1 又名 Latin1 又名 Windows-1252。

  3. 使用 UTF-8 读取文件:

    try (BufferedReader in = Files.newBufferedReader(Paths.get(Configs.optionsFi))) {
    options.load(in);
    }

关于java - 转义 - 从 Java 属性读取时的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106249/

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