unicode - 将 Mac 罗马字符转换为等效的 UTF-8

标签 unicode utf-8 character-encoding file-encodings mac-roman

我收到了一些使用 Mac OS 罗马文件编码的 HTML 文件。这些文件具有法语文本,但在编辑器中许多变音字符看起来很奇怪(即非法语)

Si cette option est sÈlectionnÈe, <removed> tentera de communiquer avec votre tÈlescope seulement ‡ líaide díun ...

带重音符号的大写 E 在浏览器中确实会像 é 一样正确显示,就像其他奇怪的字符一样。

我还有一些 UTF-8 法语文件,它们在编辑器中看起来很正常(é 看起来像 é)。我想要做的是将所有 Mac Roman 文件转换为 UTF-8 以方便维护。

仅在编辑器中更改文件编码并不能实现此目的。奇怪的人物还是奇怪。

除了制作转换字典并对所有文件进行查找/替换之外,有没有办法做到这一点?

最佳答案

如果您的编辑器在指定编码时没有正确显示,则说明您指定了错误的编码。您需要弄清楚您真正拥有的编码是什么。

您似乎有一个值为 0xE9 的字节,您需要一个 Unicode LATIN SMALL LETTER E WITH ACUTE 字符。 MacRoman 0xE9 字节是一个带有 GRAVE 的拉丁文大写字母 E 字符,这就是您的编辑器所显示的内容,因为您说它是 MacRoman。但事实并非如此。

但是,Unicode 代码点 U+00E9 确实是 带有 ACUTE 的拉丁文小写字母 E

因此,您拥有的不是 MacRoman,但几乎可以肯定是 ISO-8859-1 或 ISO-8859-15。

所以使用类似的东西

$ iconv -f ISO-8859-1 -t UTF-8 < input.latin1 > output.utf8

进行转换。

关于unicode - 将 Mac 罗马字符转换为等效的 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17559659/

相关文章:

perl - 如何确定字符串的字符集?

unicode - 仅在提示符下执行时才出现 sbcl 编码错误?

php - 如何存储符号?

character-encoding - 使用 std::filesystem::path 处理 std::string/std::wstring 的跨平台方法

c++ - XML 中的 UTF 8 编码日文字符串

java - 在Java中将unicode 'Vulgar Fractions'解析为double

php -\b 修饰符不适用于 Unicode 字符

python-2.7 - 在 Python 中使用 file.write 写入文件时出错。 Unicode编码错误

php - UTF-8 可以处理任何语言吗?

c - 字符数组开头出现意外字符