é 这个法文字符 在阿里云 ECS 上显示为乱码, mysql 设置为 utf8_general_ci

2017-03-05 10:45:17 +08:00
 l890908

我在本地搭建 wamp 测试环境, mysql 设置 utf8_general_ci 前端显示正常,可是使用阿里云的 windows 2008 ECS , IIS7+MYSQL+PHP+APACHE ,编码也是设置 utf8_general_ci ,这个字母é 就显示乱码 chass�了,此乱码显示在 url 中具体为:%EF%BF%BD. 百思不得其解,各种编码什么 gbk , utf8mb4 都有尝试,还是如此,请问如何破解?

3032 次点击
所在节点    程序员
11 条回复
flaneurse
2017-03-05 11:47:16 +08:00
注音符诶
dtfm
2017-03-05 11:55:44 +08:00
试一下先 encode(latin-1)再 decode(utf-8)
macroideal
2017-03-05 13:21:12 +08:00
mysql 查询前 mysql_query('set charset=utf-8')
snnn
2017-03-05 17:09:09 +08:00
server 和 client 都有编码,都要设置。你所说的“ mysql 设置 utf8_general_ci ”,设置的哪个的编码?
l890908
2017-03-05 17:29:33 +08:00
@dtfm php 里面没有 encode 函数吧?我使用 urlencode 然后 urldecode 也不行
l890908
2017-03-05 17:30:56 +08:00
@snnn 服务器里面 mysql 数据库编码设置的 utf8_general_ci ,程序也设置了 header("Content-type: text/html; charset=utf-8"); 依然不行
thekll
2017-03-05 18:07:44 +08:00
拉丁字母é的 utf-8 的编码是 C3A9,对应 url 的
utf8 percent encoding 不可能是三字节阿。
snnn
2017-03-05 18:39:27 +08:00
@l890908 看来你客户端没设置编码。你设置的那是 HTML 编码,不是 MySQL client 的编码
l890908
2017-03-06 10:26:58 +08:00
@snnn 那这个应该怎么设置?
l890908
2017-03-06 10:27:32 +08:00
@thekll 是 这个字母对应的编码应该是 C3A9 , url 里面那个是乱码对应 url 编码
likuku
2017-03-06 12:13:01 +08:00
@l890908 如 3 楼所示, php 里,建立 mysql 连接的相关代码,显式设定连接用编码是 UTF8

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/345022

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX