从MSSQL SQL Server迁移到(Linux)MySQL时的编码问题
我正在使用MySQL工作台,并成功地将与SilverStripe PHP CMS一起使用的SQL Server数据库迁移到Linux上的MySQL。问题是,当内容显示在LinuxWeb服务器上时,我必须将编码更改为Western(Windows-1252)才能正确显示内容。Windows IIS with SQL Server上的站点以默认UTF-8编码正确显示 在MySQL Workbench上的手动迁移编辑部分,一些专栏说,从MSSQL SQL Server迁移到(Linux)MySQL时的编码问题,mysql,sql-server-2008,mysql-workbench,Mysql,Sql Server 2008,Mysql Workbench,我正在使用MySQL工作台,并成功地将与SilverStripe PHP CMS一起使用的SQL Server数据库迁移到Linux上的MySQL。问题是,当内容显示在LinuxWeb服务器上时,我必须将编码更改为Western(Windows-1252)才能正确显示内容。Windows IIS with SQL Server上的站点以默认UTF-8编码正确显示 在MySQL Workbench上的手动迁移编辑部分,一些专栏说,collationLatin1\u General\u CI\u已迁
collationLatin1\u General\u CI\u已迁移到utf8\u General\u CI
,因此我认为这是正确的
网站正在HTML中设置
迁移过程:
我不确定在迁移过程中我需要在何处修复此问题?有3种可能出现问题的可能性:
编辑:Dave,我已经对迁移过程的步骤进行了编号。请在两个点检查MySQL数据库的编码-在步骤1之后(在执行导出和导入之前)以及在步骤3导出和导入之后。这将必须检测出错误的确切位置。这可能与迁移过程无关 如果使用PHP访问新数据库,则连接字符集可能不正确。 设置连接后,应将连接字符集设置为UTF-8
$db = new MySQLi(HOST, USER, PASSWORD, DATABASE);
$db->set_charset('utf8');
或者,如果您没有使用MySQLi:
mysql_connect(/*...*/);
mysql_set_charset('utf8');
这表明内容没有以正确的编码开始存储,和/或上一个应用程序正在编码之间转换内容。您是否使用文本编辑器查看了*.sql文件以了解内容的格式?你看过文件编码本身了吗?MySQL扩展从PHP5.5.0开始就不推荐使用,将来会被删除。我建议使用mysqliapi。我是。这就是我首先编写MySQLi示例的原因。谢谢大家。在SilverStripe中,我必须将配置设置为MySQLDatabase::set_connection_charset('utf8'),然后配置数据库层。@DaveO这是我的选项3,不幸的是,你没有回复,所以我无法扩展我的答案。@Tomos很抱歉,我刚刚回到这个问题,并立即应用了发布的解决方案,所以我没有得到你要求的检查。