检测 Notepad++ 中未知字符的字符编码,并查找/替换

检测 Notepad++ 中未知字符的字符编码,并查找/替换

我有一个 CSV 文件,其中可以看到以下摘录:

截屏

我在滚动文件时发现了这些“黑色”字符。文件很大(32 Mb)。我不确定文件采用的是什么编码;目前我的 Notepad++ 设置为“以 UTF-8 编码”。此外,当我尝试做ASCII -> 十六进制(插件->转换器->ASCII -> HEX),我得到以下输出:

EDA0BDEDB88A

我想知道:

  • 这些黑色字符的编码。
  • 用于在 CSV 文件中查找类似事件的正则表达式

答案1

黑色字符是由于 Notepad++ 无法将这些字节序列映射到可以可视化的 UTF-8 端点而导致的。您可能知道,每个字符都存储为一系列字节。在这种情况下,这些字节是

十六进制

ED A0 BD ED B8 8A

二进制

1110 1101 1010 0000 1011 1101 1110 1101 1011 1000 1000 1010

这引出了我们的疑问。

那些黑色字符的编码是什么?

这是两个 UTF-8 字符。更具体地说,第一个字符ED A0 BD是所谓的“高替代”第二个ED B8 8A“低替代”. 它们共同构成了UCS 代理。现在我们知道这些是代理字符,我们可以逆转代理对计算

如果你在UTF-8 代码点表,您会发现第一个映射到U+D83D,第二个映射到U+DE0A。因此,该对是 D83D+DE0A。这映射到 U+1F60A,即.....击鼓 笑脸

因此,您正在看的序列...是一个笑脸。

查找这些字符的正则表达式

现在我们知道了这一点,我们可以使用正则表达式来查找如下序列:

\x{D83D}\x{DE0A}

然后对于您稍后在评论中添加的问题(这是一个编辑)。

有没有其他实用程序可以帮助我找到 csv 文件中可能有非 UTF8 的字符。

我现在已经证明你的文件中的字符UTF-8。但是,仍然要回答你的问题,如果你想要一个工具来手动尝试找到某些字符的编码,你可以使用本网站。在这里您可以输入一些文本,指定编码,并将其转换为另一种编码以查看它映射到哪些字符。

相关内容