我有一个表,其排序规则设置为ut8_general_ci。表中的列也设置为此编码。
出于某种原因,当我在MySQL中查看我的表时,表中的文本被呈现/存储为ISO Latin 1,如果我不想编辑表中任何条目中的任何文本我必须使用ISO Latin 1编码来确保文本在页面上正确呈现(页面用户UTF8)。
手动输入ISO拉丁文1文本通常可以正常工作,但是对于几个条目它不起作用,即字符在我的页面上无法正确呈现(当我使用UTF8时它们也无法正确呈现)。因此这个问题。如果我能弄清楚MySQL如何处理字符编码,我可能会解决这个问题。
所以,问题是有人可以解释MySQL如何处理编码,特别是当排序规则设置为UTF-8时,我在表中看到ISO Latin 1字符的原因。
答案 0 :(得分:0)
事实证明,尽管在页面上以及表格和表格列上设置了字符编码,但与表格的连接默认为ISO Latin 1.在我的查询中添加“SET NAMES utf8”修复了此问题,即
$pdo = new PDO('mysql:dbname=****;host=localhost', '****', '****',
array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
文章deceze链接到非常有帮助。谢谢!