首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示重音字符时出现问题,适用于其他数据库

问显示重音字符时出现问题,适用于其他数据库
EN

Stack Overflow用户
提问于 2013-07-06 03:02:58
回答 1查看 883关注 0票数 1

我有三个数据库环境,MAMP,测试服务器,实际服务器。测试服务器只是一个不使用其数据库的旧站点。

在����和测试服务器上,我需要显示的重音字母显示得很好(即字体不是问题),但是在实际的服务器上,我得到了那些可爱的黑色问号方块MAMP。

所以我猜测是字符集,并查看了一下,但是所有的数据库都有相同的字符集latin1_swedish_ci。

我使用描述的方法检查了设置,然后在in this post中运行SET NAMES 'utf-8';,但问题仍然存在。

我还更改了数据库和所有单个表上的字符集,但这似乎没有效果。

我能够影响浏览器解释文本的唯一方法是将META更改为latin1,实际上我使用的是ini_set('default_charset', 'utf-8');。这里的问题是,它用各种随机符号取代了�。

有人能帮我找出原因吗?我没主意了。

我正在使用SublimeText2,这会是问题所在吗?我试着用UTF编码保存它,也没有太大的效果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-06 04:55:58

如果看到UNICODE替换字符,这意味着数据被解释为�-8(或另一种Unicode编码),但实际上不是有效的UTF8。覆盖您的浏览器,以某种其他编码方式解释数据(大多数浏览器中的“视图”菜单“→编码”),以找出数据实际采用的编码方式。一旦你弄清楚了这一点:

  1. 更改数据的编码以匹配声明的编码;通过设置数据库连接编码(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。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17495369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档