【发布时间】:2018-05-19 07:57:38
【问题描述】:
我的 php/html 页面无法正确显示带重音符号(é、á)的字符。我的数据库设置正确。当我运行show variables like 'char% 时,我得到了令人满意的输出:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
当我从我网站上的表单插入数据时,数据被编码并正确存储在数据库中。
但是在我的显示页面上发生了一些奇怪的事情。
如果我将header('Content-Type: text/html; charset=utf-8'); 放在 php 开始标记内的顶部,则我的数据库中的数据会正确显示,但我在 HTML 标记中手动输入到页面中的字符(作为表列标题或只是描述性段落文本)会显示带垃圾:�.
如果我从页面顶部删除 header('Content-Type: text/html; charset=utf-8');,我的数据库中的数据显示不正确,但我在 HTML 中写入页面的文本很好。
我已经尝试了我所知道的一切。有没有人遇到过这个?
【问题讨论】:
-
我昨天也遇到了同样的问题。
-
您是否检查过您的文件是否保存为
utf-8? -
您的表是从中提取的吗,字段是否也设置为
utf8_unicode_ci排序规则?在将旧的 iso 表转换为 utf-8 时,我们遇到了这样的问题,一团糟。 -
@Magnus 你的意思是 .php 文件?我应该使用“文件”菜单中的“另存为...”选项检查 Windows 记事本吗?
-
@Magnus,我明白了!我找错地方了。在保存选项下面有编码选项,我没有选择 utf-8 !!非常感谢。现在可以正确显示了!