【发布时间】:2010-07-17 21:47:32
【问题描述】:
我正在开发一个巴西葡萄牙语网站,但遇到了一些非常烦人的编码问题。
应该这样写的词:óbito 正在这样写:“bito”
我注意到虽然文本仍在数据库中,但它们还可以。但是当我在 PHP 中使用echo 时,就会出现编码问题。
我已经做过但没有帮助的事情清单:
1- 设置 PHP 文件保存为 UTF-8
2- 我正在使用这个元标记<meta http-equiv="content-type" content="text/html; charset=utf-8" />
3- 我使用了这个 SQL 查询:
CREATE DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci
;
ALTER DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci
;
ALTER TABLE tbl_name
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
;
【问题讨论】:
-
@Aircule:
�的存在是一个很好的迹象,表明它已经被解释为 UTF-8。因为该字符用于表示损坏的字节序列。 -
如果您将浏览器的编码更改为 ISO-8859-1(Latin 1 aka Western)会怎样?
-
@Gumbo 结果是 5265636F6D70656E7361206D65726563696461 , 4156414C4F4E2048494748 和类似的东西。 @Aircule 当我更改为 ISO-8895-1 时,这些
�没有问题。但是出现了这个问题:*.com/questions/3242762/i-enconding-issue -
这些结果没有告诉我们任何信息,因为它们来自仅具有常规 ASCII 字符的字符串(其中 ISO-8859-1 的编码与 UTF-8 相同)。尝试转储包含重音字符的字符串(即:óbito)
-
@Rafael Carvalho:好吧,在这种情况下,数据似乎是正确的。那我猜你的会话/连接设置是错误的。尝试执行这些语句以查看当前的字符集/排序规则设置:
SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';
标签: php mysql utf-8 character-encoding