2011-11-21 109 views
0

我正在使用WAMP服务器。我有我的php.ini设置为UTF-8,我也有我的连接文件中的 header('Content-Type: text/xml; charset=utf-8');在我的php和 @mysql_query("SET NAMES utf8");土耳其语字符的MySQL编码问题

MySQL排序规则设置为utf8_turkish_ci,当我直接从phpMyAdmin写土耳其字符ç,ş,ö,»等我的查询正确显示。但是当我尝试从php表单提交它们时,它们会变成数据库中的奇怪字符,但是当我使用php再次写入它们时,它们会正确显示。

我的问题是,当我直接从phpMyAdmin输入查询时,它们无法在PHP中正确显示,反之亦然,当我从PHP输入它们时,它们无法在数据库中正确显示。我该如何解决它?

回答

0

当您使用脚本编写文件时,您的数据正在正确存储在数据库中。证明这一点的是,当你回显数据时它们正确无误。如果您在phpmyadmin中看不到正确格式的数据,则表示该页面未正确设置以显示utf-8。

要检查的最简单方法是按Ctrl + U查看你的phpmyadmin的源代码,并查找:

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

还应显示:

MySQL charset: UTF-8 Unicode (utf8) 
MySQL connection collation: utf8_unicode_ci 

在第一页当你打开phpMyAdmin。如果你没有看到这两个,请按照下列步骤来修复它:

A)即时解决方案我能想到的是改变或迫使浏览器的字符编码为utf-8。在Mozilla Firefox中,可以通过查看 - >字符编码 - > Unicode(UTF-8)

或B)另一个优雅的解决方案可能是更改phpMyAdmin配置,以便它发送并设置适当的字符集Content-Type标题为Content-Type:text/html; charset = utf-8。要做到这一点,我们必须在编辑phpMyAdmin的根目录中的config.inc.php文件:

$cfg['DefaultCharset'] = 'utf-8'; and 
$cfg['AllowAnywhereRecoding'] = true; 

配置的这些变化应适当发送头。无论如何,如果lang cookie已经设置为其他字符集,它将不会反映这些更改。因此,可能需要清除Cookie才能看到更改。

信贷对上述解决方案:http://rajeshanbiah.blogspot.com/2004/12/storing-unicode-texts-in-mysql-with.html

+0

在另一台计算机我刚刚添加的行的mysql_query( “集名称 'UTF8' COLLATE 'utf8_turkish_ci'”);在我的连接PHP没有改变任何东西从phpmyadmin,它工作得很好,我希望它会工作时,我工作的托管。 – huroran