我在我们的网站上有类似的角色:fãƒâ©mnyomãƒâ³

那是一个以另一种语言输入的街道地址(尽管我不知道哪种语言)。这是DB设置:

mysql 4.1.2log
charset cp1252 West European (latin1)

我正在使用PHP,但没有MBSTRINGS()(尽管我在此地址上没有字符串转换,只是回声)。

如果我将MySQL Charset从CP1252更改为UTF-8,并确保我使用了类似的东西 header( 'Content-Type: text/html; charset=UTF-8' ); 这会改善我的处境吗?还是由于保存在CP1252 Charset中,我无能为力吗?原始数据库创建于2002年,此后已被使用/扩展。我们已经升级了服务器并重新提出了垃圾场,但我承认并没有给粉碎机很多。

如果我有软管,我可能会在这些字段中删除文本,但我想支持Unicode,所以如果我发行 ALTER database_name DEFAULT CHARACTER SET utf8; 这是否可以确保未来的多键编码能够正确保存,至少将储存量从方程式中取出(让我担心PHP)?

谢谢 -

有帮助吗?

解决方案

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_in_latin1_t.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top