gpt4 book ai didi

java - 在 idea intellij 中更改编码不起作用

转载 作者:行者123 更新时间:2023-11-30 06:07:04 28 4
gpt4 key购买 nike

我有一个带有字符串 String s="P�rsh�ndetje bot�!"; 的 .java 文件。

当我在 Notepad++ 中打开此文件并将编码更改为 ISO-8859-1 时,它会显示相应的字符串:"Përshëndetje botë!",但如果我打开文件在 idea intellij 中并将编码更改为 ISO-8859-1,它警告我某些符号无法转换,然后将这些符号替换为 ? mark: "P?rsh ?ndetje 机器人?!”

为什么会这样?为什么Notepad++可以转换文件,而idea不能?

最佳答案

我不确定,但有可能当您第一次打开文件时,它被读取为 UTF-8,并且无效的字节序列变成了 Unicode replacement character ,那么当您尝试转换为 ISO-8859-1 时,它会尝试转换 Unicode 替换字符,但在 ISO-8859-1 中没有该字符的值,因此它被转换为 ?

(即使像“ërs”这样的文本可以用 Unicode 和 UTF-8 表示,“ërs”的 ISO-8859-1 编码是 EB 72 73 这是一个三字节 UTF-8 序列的起始字节,但接下来的两个字节不是连续字节,因此将其视为 UTF-8 的程序会认为这些重音字符无效。 )

我认为您需要让 IntelliJ 以 ISO-8859-1 格式打开文件,而不是先以 UTF-8 格式打开文件,然后尝试转换为 ISO-8859-1。

(当您在 Notepad++ 中切换编码时,它必须返回到文件的原始字节并将它们解释为 ISO-8859-1,而不是尝试通过将无效字节更改为替换字符。)

请注意,ë 是一个完全有效的 Unicode 字符。它可以表示为 U+00EB,带分音符的拉丁文小写字母 e,或者表示为两个代码点,U+0065 和 U+0308,拉丁文小写字母 e 组合与 结合分音符。但是 U+00EB 将在 UTF-8 中编码为双字节序列 C3 AB,对于 U+0065 U+0308,“e”将编码为本身、65 和 U+0308 将被编码为 CC 88

因此 UTF-8 中的“ë”必须是 C3 AB65 CC 88。它不能是 EB

关于java - 在 idea intellij 中更改编码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42450900/

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