mysql - 将 utf-8 mysqldump 导入 latin1 数据库

标签 mysql character-encoding

我以某种方式在 utf8 中有一个 phpnuke 站点的转储文件。我正在尝试在新服务器上重新打开此站点。但是nuke使用latin1。 我需要一种使用此 utf-8 转储文件创建 latin1 数据库的方法。 我尝试了我能想到的一切。 iconv, mysql 替换, php 替换...

最佳答案

在转储的开头添加 SET NAMES 'utf8'; 语句。 这将向 MySQL 表明它即将接收的命令是 UTF8 格式的。 它会将数据存储在您的表当前设置的任何字符集中;在这种情况下,如果您的数据库是 latin1,则数据将存储在 latin1。

来自 http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html :

SET NAMES indicates what character set the client will use to send SQL statements to the server. Thus, SET NAMES 'cp1251' tells the server, “future incoming messages from this client are in character set cp1251.” It also specifies the character set that the server should use for sending results back to the client. (For example, it indicates what character set to use for column values if you use a SELECT statement.)

最后一件事是 latin1 的可用字符比 utf8 少得多。对于西欧语言以外的任何语言,您都会丢失数据。

例如,假设 test 列是 latin1。第一个条目将正确显示(法国口音在 latin1 内);但是韩语中的第二个条目将显示为问号。

SET NAMES 'utf8';
INSERT INTO TESTME(test) VALUES ('Bienvenue sur Wikipédia');
INSERT INTO TESTME(test) VALUES ('한국어 위키백과에 오신 것을 환영합니다!');

关于mysql - 将 utf-8 mysqldump 导入 latin1 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7946409/

相关文章:

php - 准备 PHP 应用程序以使用 UTF-8

python,我无法在重新搜索后保存特殊字符,例如 θæŋ

mysql - 从 MySql 返回多级数组

mysql - 对 SQL SELECT 语句中的数字感到困惑

c# - 将两个字节图像数据合并为一个 PDF,然后下载或打印该 PDF

java - Windows Bat 文件无法使用德语元音变音

sql字符编码非英文字符

c++ - Base64解码错误

php - 在 PHP/MYSQL 中基于 DATE 的 SELECT 的最佳方式

mysql - phpMyAdmin 无法连接到 MySQL 服务器