我有三个数据库环境,MAMP,测试服务器,实际服务器。测试服务器只是一个不使用其数据库的旧站点。
在����和测试服务器上,我需要显示的重音字母显示得很好(即字体不是问题),但是在实际的服务器上,我得到了那些可爱的黑色问号方块MAMP。
所以我猜测是字符集,并查看了一下,但是所有的数据库都有相同的字符集latin1_swedish_ci。
我使用描述的方法检查了设置,然后在in this post中运行SET NAMES 'utf-8';,但问题仍然存在。
我还更改了数据库和所有单个表上的字符集,但这似乎没有效果。
我能够影响浏览器解释文本的唯一方法是将META更改为latin1,实际上我使用的是ini_set('default_charset', 'utf-8');。这里的问题是,它用各种随机符号取代了�。
有人能帮我找出原因吗?我没主意了。
我正在使用SublimeText2,这会是问题所在吗?我试着用UTF编码保存它,也没有太大的效果。
发布于 2013-07-06 04:55:58
如果看到UNICODE替换字符,这意味着数据被解释为�-8(或另一种Unicode编码),但实际上不是有效的UTF8。覆盖您的浏览器,以某种其他编码方式解释数据(大多数浏览器中的“视图”菜单“→编码”),以找出数据实际采用的编码方式。一旦你弄清楚了这一点:
mysql_set_charset、SET NAMES ...或类似的,取决于您的API)来实现这一点。单独列的排序规则和编码是不相关的,因为MySQL通过设置正确的Content-Type HTTP头和/或<meta>标记,将编码动态地转换为声明的编码;ini_set('default_charset', ...)将执行此操作,但web服务器可能会覆盖它。使用浏览器工具检查实际的HTTP头。首先,确保数据库中的数据实际上是正确的,并且不是垃圾数据。如果您需要更多信息,请参阅What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text和Handling Unicode Front To Back In A Web App。
https://stackoverflow.com/questions/17495369
复制相似问题