mysql - 在 Latin 1 --> UTF-8 中是否存在我需要修复的隐藏编码错误?

标签 mysql utf-8 character-encoding latin1

我是否仍需要对看起来完全正常的文本运行完整的 latin1 到 UTF 8 的转换?

我正在更换论坛软件,旧的论坛数据库使用 Latin1 编码。新的论坛数据库对表格使用 UTF8 编码。

看起来导入程序脚本直接从一个表复制到另一个表,而没有尝试修复任何编码问题。

我一直在根据此处列出的转换信息使用查找和替换手动修复可见错误:http://www.i18nqa.com/debug/utf8-debug.html

文本的其余部分看起来不错并且完全可读。

我有限的理解是,UTF-8 向后兼容 ASCII,而 Latin1 主要是 ASCII,因此只有边缘情况不同,需要更新。

那么我还需要对看起来完全正常的文本运行完整的 latin1 到 UTF 8 的转换吗?

我宁愿不这样做,因为我已经更改了一些字段上的一些 BB 代码标签,这些标签存储在 UTF 8 中后,所以担心这些更新会在 Latin1 字符的中间卡住 UTF8 字符, 并尝试对混合字符集进行完全转换只会让事情变得更糟。

最佳答案

ISO 8859-1(拉丁语 1)中 0x80..0xFF 范围内的任何字符都需要在 UTF-8 中重新编码为 2 个字节。第一个字节是 0xC2 代表 0x80..0xBF;第一个字节是 0xC3 代表 0xC0..0xFF。第二个字节是通过将两个最高有效位设置为 1 和 0 从 Latin 1 的原始值派生的。对于字符 0x80..0xBF,第二个字节的值与 Latin 1 相同。如果您使用 8859- 15,您可能会有一些更复杂的转换(欧元符号的编码与其他拉丁 1 字符不同)。

有很多工具可以提供帮助。 iconv 就是其中之一。

关于mysql - 在 Latin 1 --> UTF-8 中是否存在我需要修复的隐藏编码错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28119559/

相关文章:

php - while()中的数据如何划分?

mysql - 需要从表中的两个不同日期按天计数

Python 3 字符串索引查找是 O(1)?

sql-server - 在 SQL Server 中获取 HASHBYTES() 方法的不同结果

python - 在 Python 3 中将 utf-8 unicode 序列转换为 utf-8 字符

mysql - SQL 表在 PhpMyAdmin 上是垂直列出的,而不是水平列出的

mysql - 本地Mysql成功登录,但每次运行查询都失去连接

python - JSON 包含不正确的 UTF-8\u00ce\u00b2 而不是 Unicode\u03b2,如何在 Python 中修复?

php - UTF-8贯穿始终

delphi - 编码 "UTF-8"的字符 0xc286 在 "WIN1252"中没有等效项 ....在使用 iconv postgres 转换时恢复崩溃