如何将 mysql latin1 转换为 utf8
How to convert mysql latin1 to utf8
我继承了一个需要进一步开发的网络系统。
该系统似乎是由阅读 PHP 教程的两章并认为他可以编写代码的人创建的...
所以...网页本身采用 UTF8 格式,并显示和输入其中的所有内容。数据库表已使用 UTF8 字符集创建。但是,在配置中,有 "SET NAMES LATIN1"。换句话说,UTF8 编码的字符串使用强制 latin1 编码填充到数据库中。
有没有办法将这个混乱转换为实际存储在 utf8 中并摆脱 latin1?
我试过 this, but since the database table is set to utf8, this does not work. Also tried this one 没有成功。
我也许可以通过使用 latin1 编码读取 PHP 中的所有表然后将它们写回 utf8 中的新数据库来做到这一点,但我想尽可能避免它。
情况并没有您想象的那么糟糕,除非您的数据库中已经有很多非罗马字符(即不能用 Latin-1 表示的字符)。 Latin-1 是 utf8 的真子集。您的网络应用程序在 utf8 中运行,您的表格内容也在 utf8 中。所以不需要转换表格。
因此,尝试将 SET NAMES latin1
更改为 SET NAMES utf8
。它可能会解决您的问题,方法是允许您的 php 程序的连接与连接两端的代码使用相同的字符集。
读这个。 http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html
我设法通过 运行 像这样更新文本字段来解决它:
UPDATE table SET title = CONVERT(CONVERT(CONVERT(title USING latin1) USING binary) USING UTF8)
更改列数据类型
到VARBINARY
它会自动转换 latin1 数据
谢谢你们。
希望对您有所帮助。
我继承了一个需要进一步开发的网络系统。 该系统似乎是由阅读 PHP 教程的两章并认为他可以编写代码的人创建的...
所以...网页本身采用 UTF8 格式,并显示和输入其中的所有内容。数据库表已使用 UTF8 字符集创建。但是,在配置中,有 "SET NAMES LATIN1"。换句话说,UTF8 编码的字符串使用强制 latin1 编码填充到数据库中。
有没有办法将这个混乱转换为实际存储在 utf8 中并摆脱 latin1?
我试过 this, but since the database table is set to utf8, this does not work. Also tried this one 没有成功。
我也许可以通过使用 latin1 编码读取 PHP 中的所有表然后将它们写回 utf8 中的新数据库来做到这一点,但我想尽可能避免它。
情况并没有您想象的那么糟糕,除非您的数据库中已经有很多非罗马字符(即不能用 Latin-1 表示的字符)。 Latin-1 是 utf8 的真子集。您的网络应用程序在 utf8 中运行,您的表格内容也在 utf8 中。所以不需要转换表格。
因此,尝试将 SET NAMES latin1
更改为 SET NAMES utf8
。它可能会解决您的问题,方法是允许您的 php 程序的连接与连接两端的代码使用相同的字符集。
读这个。 http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html
我设法通过 运行 像这样更新文本字段来解决它:
UPDATE table SET title = CONVERT(CONVERT(CONVERT(title USING latin1) USING binary) USING UTF8)
更改列数据类型
到VARBINARY 它会自动转换 latin1 数据
谢谢你们。 希望对您有所帮助。