MySql varchar从Latin1更改为UTF8

时间:2010-06-23 08:40:26

标签: mysql character-encoding utf-8 latin1

在mySql表中,我使用Latin1字符集在varchar字段中存储文本。由于我们的网站现在在更多国家/地区得到支持,我们需要支持UTF8。如果我将这些字段更改为UTF8会发生什么?这样做是安全的还是会弄乱这些字段中的数据?在将字段更改为UTF8时,我需要考虑一下吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

MySQL处理得很好:

CREATE TEMPORARY TABLE t1 (
  c VARCHAR(10)
) CHARACTER SET ="latin1";

INSERT INTO t1 VALUES ("æøå");
SELECT * FROM t1; # 'æøå'

ALTER TABLE t1 CHARACTER SET = "utf8";
SELECT * FROM t1; # 'æøå'

DROP TEMPORARY TABLE t1;

编辑:并且没有latin-1字符无法存储为utf-8,所以你不应该得到任何dataloss

答案 1 :(得分:1)

数据库前端应该没有任何问题。 MySQL将在您进行更改时处理编码之间的数据转换。

当您向网站添加对UTF-8的支持时,您还需要注意其他事项。

  • 为获得最佳结果,您应确保与数据库的连接使用UTF-8作为连接字符集。您可以通过在建立连接时发出SET NAMES utf8来执行此操作。
  • 您需要确保通过更改元标记将您的网页本身声明为以UTF-8编码的浏览器。
  • 安全注意事项:您应该检查用户输入以确保它是有效的UTF-8,以避免跨站点脚本(XSS)攻击的可能性