如何防止 Notepad++ 用中文字符替换破折号?

如何防止 Notepad++ 用中文字符替换破折号?

我最近开始使用 Notepad++。但是当我打开包含长破折号的 txt 文件时,这些长破折号会显示为中文字符。


以下是在记事本中打开的测试文件的屏幕截图:

图片1


这是在 Notepad++ 中打开同一个文件的屏幕截图。

图片2


有人能解释这种奇怪的行为,并解释如何防止它吗?
谢谢!

答案1

我可以重现该问题。

原因:自动检测文件编码。

您的文件采用标准的8位代码表进行编码,即Windows-1252(如您的评论问题下方),其中一种 ANSI 8 位编码,有 256 个可能的字符。但看起来 Notepad++ 正在将包含长破折号的文件解释为Shift-JIS编码。(出现问题时,可以在 Notepad++ 主窗口右下角附近的状态栏上看到此编码。)因此,Notepad++ 会将文件中找到的 ASCII 值大于 127 的字符解释为日语字符。

解决方案:将文件编码更改为 UTF-8(或其他合适的编码)。

  1. 打开您的文件。
  2. 使用菜单编码 > 字符集 > 西欧 > Windows-1252切换到正确的编码,字符将按预期显示。
  3. 使用菜单编码 > 转换为 UTF-8. 右下角附近的状态栏指示器现在显示Unicode: 8-BOM
  4. 保存文件。

也许您可以反对您不想要 UTF-8,但您没有在问题中指出该限制,并且通常没有理由不使用它。它将保持所有字符的稳定,而不会出现您遇到的外观问题。该限制可以在较旧的应用程序/工具中处理。那么您需要坚持使用他们要求的 ANSI 编码。

附加信息:

Windows 自带的记事本完全支持 UTF-8,因此您不会遇到麻烦。不过,我建议使用 UTF-8 文件 物料清单。UTF-8 without BOM 也可以,但是当标记缺失时,编辑器会依赖格式自动检测,正如您所见,有时会出错。我看到一些较旧的程序抱怨 BOM 标记,例如“文件开头的字符无效”。然后我将文件转换为 UTF-8 without BOM。

统一码标准支持超过 256 个代码点:支持的总数为 1,114,112。根据 Wikipedia,此空间目前由 136,755 个字符使用,涵盖 139 种现代和历史文字,以及多个符号集。其余部分保留以备将来使用。如您所见,Unicode 是涵盖世界上大多数常用字符的编码,因此您永远不会再陷入代码页问题。您不需要坚持使用 UTF-8,Unicode 也可以表示为 UTF-16、UTF-32 或几种更奇特的表示形式(UTF-7、UTF-1 等)或非过渡形式,如 UCS-4。其中,UTF-8 最受支持,因此我推荐这个。在不使用代码点 127 以上的字符的情况下,它与 ASCII 兼容(BOM 标记除外,它在 ASCII 中显示为文件开头的几个垃圾字符)。

如果任何程序需要您的代码页,请选择代码页 65001适用于 UTF-8。

如果你想探索 Unicode 的所有字符,包括按其名称或其他属性进行搜索或过滤,或识别未知字符,请使用例如巴别地图

相关内容