【问题标题】:Can't get php/html pages to display characters with accents (é, á ) correctly无法让 php/html 页面正确显示带重音符号(é、á)的字符
【发布时间】: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 !!非常感谢。现在可以正确显示了!

标签: php html mysql utf-8


【解决方案1】:

尝试将文件编码更改为 UTF-8。 Notepad++、SciTE、PhpStorm 和许多其他人都可以做到。

【讨论】:

    【解决方案2】:

    除了您在服务器端所做的之外,我唯一能想到的就是添加:

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    到您的 html 文件中的 <head> 标记。

    【讨论】:

    • 我已经有了!我通过 PHP 在所有带有声明的页面上包含它: //include header template require('layout/header.php');
    • Tools > View Source以确认该行在源html中。
    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多