在进一步的文字中,我将某些字符称为正确的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上引入。
谢谢。
答案 0 :(得分:3)
我实际上已经经历了几次。我会采取以下措施来解决它。
一旦我连接到数据库:
mysql_query("SET NAMES 'utf8'", $db_con);
在每页的顶部:
header('Content-Type: text/html; charset=utf-8');
如果您想真正迂腐,可以使用任何形式发布数据:
<form accept-charset="utf-8"></form>