2011-01-13 98 views
1

在进一步的文字,我会参考一些字符作为正确的UTF字符,这是UTF-8编码的字符在它的确定形式(á)和不正确UTF字符,这是相同的,但搞砸了utf-8字符(例如显示为ý)。奇怪的UTF-8甲基苯丙胺问题

所以,有CMS上运行MAMP - 这是本地开发的网站,客户端。现在,在管理中,我输入正确的utf-8字符。在本地主机上浏览时,它显示为正确的utf-8字符。但是,在utf-8编码的mysql中,它显示为不正确的utf-8字符(在Sequel Pro/phpMyAdmin中)。

当数据库被转移到临时/ dev的服务器,这在MAMP工作非常相同的DB,停止工作,并显示为不正确的 - 就像他们在MAMP输入。

不过,如果我打开临时服务器,输入正确的字符在管理(非常相同的代码),他们不仅显示正常,但他们也保存在MySQL作为正确的字符。

实际上,我震惊了 - 非常相同的代码,非常相同的数据库,它仍然以不同的方式表现。

你有没有发现类似的东西,即你能饶了我的认真细致地翻着几百万不同的切入点,其中UTF-8可以搞砸了的痛苦。

P.S:我认为这可能是甲基苯丙胺相关的(奇怪的UTF-8的设置),而不是严格的应用程序相关。 P.S .:应用程序使用MySQLi,每个文件都是UTF-8编码:/唯一不同的是,在mamp上我只使用host/user mysql连接,而在分段db套接字引入时。

谢谢。

+1

查看服务器和客户端的默认编码设置。例如,在连接到数据库以在运行时设置客户端编码后,您可以在代码中运行“SET NAMES utf8”。 – Fanis 2011-01-13 20:40:53

回答

3

我实际上经历过这几次。我做了以下工作来解决它。

当我连接到数据库:

mysql_query("SET NAMES 'utf8'", $db_con); 

在每个页面的顶部:

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

如果你想成为真正的迂腐,与任何形式的使用发布数据:

<form accept-charset="utf-8"></form> 
+0

是的,这样做(如果你只是写了一点:) – 2011-01-13 23:43:56