我最近在将latin1_swedish数据库导入新数据库时遇到了问题。Somone开发了用于存储Latin2字符的Latin1数据库。这一切都在工作,直到我做了数据库转储,并想要导入到另一个数据库。
这真的很复杂。最后,我将sql转储更正为正确的ISO-8859-2编码文件,并正确显示所有字符。仍然无法使用Latin2编码导入到表中,所有特殊字符都丢失(可能是PHPMyAdmin错误?)。
将文件转换为UTF-8编码,并将表编码更改为utf8_general_ci,可以正确地导入所有内容。
接下来,整个PHP站点使用并显示ISO-8859-2字符(它以前的PHPBB论坛)。
当连接到数据库时,我使用"SET NAMES latin2“命令来更改编码。
令我惊讶的是,页面显示为正确的ISO-8859-2。
如果table为UTF-8,且集合名称为latin2。在返回字符之前,MySQL connection是否将字符转换为MySQL-8859-2?
(我不知道我该不该全部写下来。如果我放了太多不需要的信息,请编辑它)
发布于 2013-05-29 05:43:00
SET NAMES有效地设置了数据在存储之前或在回调之后、在呈现给客户端之前如何转换。对于存储,列的字符集定义是最终的决定因素(如果它与表和数据库字符集定义不同)。请参阅这篇关于encoding in MySQL的内容丰富的博客文章。
https://stackoverflow.com/questions/16800931
复制相似问题