当前位置: 首页 > 知识库问答 >
问题:

改变编码的想法intellij不工作

公孙弘深
2023-03-14

我有一本书。带有字符串的java文件string s=“P”�rsh�ndetje机器人�!“;

当我在记事本中打开这个文件并将编码更改为ISO-8859-1时,它会显示适当的字符串:"Përshëndetje botë!",但如果我在理念intellij中打开文件并将编码更改为ISO-8859-1,它会给我一个警告,即某些符号无法转换,然后用标记替换这些符号:"P? rsh? ndetje bot?!"

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

共有2个答案

岳嘉悦
2023-03-14

我相信IDEA(默认编码是UTF-8)中有一些错误,当您转换包含有效ISO-8859-1编码字符的文件并将文件编码更改为ISO-8859-1时,它会把它弄乱。它弄乱的特定代码点是。出于某种原因,它用\ufffd替换它,而其正确的代码点是\u00eb。这是在编辑器中显示为的字符。

然后在按住ALT键的同时将此字符添加为00eb。然后它正确地显示出来:

缑兴贤
2023-03-14

我不确定,但有可能当你第一次打开文件时,它被读取为UTF-8,无效的字节序列被转换为Unicode替换字符,然后当你试图转换为ISO-8859-1时,它试图转换Unicode替换字符,但在ISO-8859-1中没有值,所以它被转换为

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

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

(在记事本中切换编码时,必须返回到文件的原始字节,并将其解释为ISO-8859-1,而不是试图通过将无效字节更改为替换字符来转换已经更改的内容。)

请注意,ë是一个完全有效的Unicode字符。它可以表示为U 00EB,拉丁文小写字母e和diaeresis,也可以表示为两个代码点,U 0065和U 0308,拉丁文小写字母e和组合diaeresis。但是U 00EB将在UTF-8中编码为两个字节序列C3AB,对于U 0065 U 0308,“e”将被编码为本身,65,U 0308将被编码为CC88

所以UTF-8中的“ë”必须是C3AB65CC88。它不可能是EB

 类似资料:
  • 它是这篇文章的副本,并添加了信息(因为它不是其他类似问题的副本)。 我只是在新计算机上安装了Intellij的最新版本,无法使Maven在空项目中正常工作。 当Maven启动时,它试图下载所有的插件,但它停留在无限的下载中。我尝试添加一些依赖项,并获得该依赖项的无限下载 我发现很多人都有这样的问题,但这个解决方案对我不起作用。 此外,我试图在idea Maven设置中更新主存储库手册中的信息,并得

  • 我目前正在使用intellij idea 2020.3.1。我用java和Flatter做了很多小项目,到现在为止,我从未遇到过自动完成功能/智能感知的任何问题。它突然停止工作,我已经试着修复了好几天了。我尝试了以下解决方案,但没有效果。 关闭电源模式 我已将我的项目根目录标记为源根目录 我正确设置了JDK 我已经完成了“使缓存无效/重新启动” 都没有用。请问还有什么我可以做的吗?在此处输入图像描

  • 我在我的项目中有以下类和配置: 和Spring配置: 这段代码可以工作,但是IntelliJ IDEA在配置中显示了一个错误,说明。Comp本身是一个pojo,不需要autowired,正如您所看到的,工厂为Op ctor提供了一个。 此外,我不需要被autowired,因为一旦我有了工厂,我就可以简单地传递它,正如我所说的comp本身就是一个POJO。用法示例: 我不需要comp被autowir

  • 问题内容: IDEA具有强大的内置功能-反编译器。它可以很好地工作。我可以复制源代码,但是找不到将所有反编译的Java类提取到Java文件的选项。 这个项目有很多Java类和程序包,所以我将很长时间手动复制它。 有谁知道如何提取到Java源文件。谢谢 问题答案: 要从命令行对jar包使用IntelliJ Java反编译器,请遵循此处提供的说明:https : //github.com/JetBra

  • 我有一个Java Maven项目,在Eclipse中开始,工作了几天,然后在IntelliJ IDEA中导入,再工作几天。 在IDEA和via shell中的正常运行/执行确实有效,但调试不起作用。