怪异的UTF-8 MAMP问题

时间:2011-01-13 20:08:12

标签: php mysql utf-8 mamp

在进一步的文字中,我将某些字符称为正确的UTF字符,这是utf-8编码的字符,其格式正确(á)和不正确的UTF字符,这是相同的,但搞砸了utf-8字符(例如显示为ý)。

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

当数据库移动到staging / dev服务器时,在MAMP上运行的同一个数据库停止工作并显示为不正确 - 正如它们在MAMP上输入一样。

但是,如果我在登台服务器上打开管理(相同的代码)并输入正确的字符,不仅它们显示正常,而且它们也作为正确的字符保存在mysql中。

我真的感到震惊 - 完全相同的代码,同样的数据库,它仍然以不同的方式运行。

你有没有注意到这样的事情,也就是说,你可以免除我看到数以百万计的不同切入点的痛苦,在这里可能会弄乱utf-8。

P.S。:我认为这可能与MAMP相关(奇怪的utf-8设置),并非严格与应用相关。 P.S。:该应用程序使用MySQLi,每个文件都是UTF-8编码:/唯一不同的是,在mamp我只使用主机/用户mysql连接,而在staging db socket上引入。

谢谢。

1 个答案:

答案 0 :(得分:3)

我实际上已经经历了几次。我会采取以下措施来解决它。

一旦我连接到数据库:

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

在每页的顶部:

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

如果您想真正迂腐,可以使用任何形式发布数据:

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