php& mysql将非转换为unicode

时间:2010-08-22 08:35:10

标签: php mysql unicode utf-8 cp1252

我的网站上有这样的字符:Fé©mnyomó

这是一个街道地址,用另一种语言输入(虽然我不知道哪个)。这是数据库设置:

mysql 4.1.2log
charset cp1252 West European (latin1)

我正在使用PHP但没有mbstrings()(虽然我在这个地址上没有字符串转换,只是回显)。

如果我将mysql字符集从cp1252更改为UTF-8并确保我使用像header( 'Content-Type: text/html; charset=UTF-8' );之类的东西来改善我的情况?或者,数据是否因为保存在cp1252字符集中而被隐藏,我无能为力?原始数据库创建于2002年,自此以后一直在使用/扩展。我们已经升级了服务器并重新导入了转储,但是我很惭愧地承认不会过多考虑字符集。

如果我被软管,我可能只是删除这些字段中的文本,但我想支持unicode继续,所以如果我发出ALTER database_name DEFAULT CHARACTER SET utf8;将确保将来正确保存未来的多字节编码,至少考虑存储空间(让我担心PHP)?

谢谢 -

1 个答案:

答案 0 :(得分:1)

1)将所有字符集转换为UTF8:

ALTER database_name DEFAULT CHARACTER SET utf8;

2)在页面上的任何查询之前发出此信息:

mysql_query("set names 'utf8'");

3)使用此标题:

header( 'Content-Type: text/html; charset=UTF-8' );

4)插入此元标记:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>

5)另外,请阅读:http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html