Latin1_swedish_ci在MySQL中编码

时间:2010-11-27 11:00:44

标签: mysql utf-8 character-encoding

我在我的网站上使用UTF-8编码。最近我一直在我的MySQL表中存储中文/西班牙语/俄语名称,然后在用UTF-8字符集生成的页面上用PHP打印它们。页面工作正常,我正确地看到所有字母。但是,我刚刚意识到我的表设置了latin1_swedish_ci charset。即使我使用latin1_swedish_ci字符集存储这些名称,使用UTF-8在我的网站上提供这些名称仍然可以正确显示它们怎么可能?

谢谢!

乔尔

2 个答案:

答案 0 :(得分:2)

因为mysql连接仍在使用latin1,所以 您应该将这些数据视为UTF-8,但存储在latin1环境中。

所以,为了证明这一点,

show variables like '%char%';

以上应该返回的大部分设置都在latin1

应用

set names utf8;

你会看到所有的UTF-8都变成了双重编码(乱码)

答案 1 :(得分:1)

你会对线程感兴趣: A script to change all tables and fields to the utf-8-bin collation in MYSQL

他们正在处理那些修复你所做过的事情的方法。

请注意,在主键中使用时,以utf8编码的varchar的大小会计算三倍,因此单个主键列的最大长度为varchar(333)。

相关问题