Mysql 导出latin1数据库并作为utf8导入/转换为utf8
我正在一个使用旧数据库的网站上工作,该数据库运行在一台外部MySQL 4.1服务器(服务器a)上。数据库使用拉丁1_瑞典_ci排序规则,表和列也使用拉丁1_瑞典_ci排序规则。有一个新的服务器B运行MySQL 5来替换服务器a。编码应该是utf8\U unicode\U ciMysql 导出latin1数据库并作为utf8导入/转换为utf8,mysql,encoding,utf-8,iso-8859-1,Mysql,Encoding,Utf 8,Iso 8859 1,我正在一个使用旧数据库的网站上工作,该数据库运行在一台外部MySQL 4.1服务器(服务器a)上。数据库使用拉丁1_瑞典_ci排序规则,表和列也使用拉丁1_瑞典_ci排序规则。有一个新的服务器B运行MySQL 5来替换服务器a。编码应该是utf8\U unicode\U ci 我导出服务器A上的数据库: mysqldump-u root-p--opt--quote name--skip set charset--default character set=latin1 db_a-r db_a.s
mysqldump-u root-p--opt--quote name--skip set charset--default character set=latin1 db_a-r db_a.sql
sed-e's/CHARSET\=latin1/CHARSET\=utf8\COLLATE\=utf8\u general\u ci/g'db\u a.sql>db\u a2.sql
iconv-f拉丁1-t utf8 db_a2.sql>db_a3.sql
我尝试了上述步骤的不同变体,但没有成功。包括作为latin1导入和使用mysql convert命令。有人知道我的问题的解决方案吗?最好将其加载为latin1,然后进行修复
然而,这并不简单,因为有多种场景需要考虑。见此: 请特别注意,至少有两种不同的方法来执行
ALTER
。如果你选错了,数据会变得更加混乱
要查看您拥有的内容,请使用以下数据示例:
SELECT col, HEX(col) FROM ... WHERE ...
如果phpmyadmin打印正确,则似乎是其他客户端的问题。可能编码是硬编码的,或者页面生成为latin1,所以浏览器将UTF-8解释为latin1(因为webserver)要调试编码问题,您应该在web上编写已知字符(和已知值)、之前、之后(仅一个简单查询)的字节码。这有助于理解问题所在。“错误的字符”没有帮助。知道哪些/如何告诉我们常见错误