【问题标题】:charset utf-8 does not display é, á, , í , or ú字符集 utf-8 不显示 é、á、 、 í 或 ú
【发布时间】:2016-02-29 13:36:49
【问题描述】:

我有一个存储访问者输入的一些不寻常字符的数据库:例如é、á、 、 í 和 ú。

我的 html 5 网页显示?而不是我使用时的字符

<meta charset="utf-8">

但是当我使用

<meta charset="ISO-8859-1">

字符显示正确。

但是,当我指定后一个字符集时,W3C 验证器会吐出一条错误消息:

错误:元素元上属性字符集的错误值 ISO-8859-1: iso-8859-1

有没有办法让字符正确显示并获得 W3C 验证,还是我期望过高?

问候

建议的“已回答”问题不适用,因为:1)我的 php 版本是 5.4,而不是 5.5(2)我不明白这个答案似乎是针对比我有更深知识的人.

【问题讨论】:

  • Uhm... 是完整的错误 "iso-8859-1 不是首选编码名称。此编码的首选标签是 windows-1252。" 任意机会……!?
  • 你是怎么写响应的内容的? (即,您使用的编码需要与您所说的正在使用的编码匹配。)UTF-8 可以编码任何 Unicode 字符,而那些常见的重音字符肯定是 Unicode。
  • UTF-8 all the way through的可能重复
  • @Richard 我在哪里可以找到响应内容的编码?对不起,我老了(64 岁),我不懂术语。页面中没有提到其他字符集。
  • 1) PHP版本与其他问题的适用性无关。 2) 由于当您将页面标记为 ISO-8859 时字符显示正确,这意味着您的数据是 ISO-8859 编码的。 3)如果您需要温和的介绍,请从这里开始:Handling Unicode Front To Back In A Web AppWhat Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text

标签: php html utf-8 character-encoding iso-8859-1


【解决方案1】:

好的,我想我现在有了答案。感谢 deceze 指点我:http://kunststube.net/frontback/

我首先检查了数据库并将字段设置为排序规则; utf8_general_ci,我认为是正确的。

我现在有:

<meta charset="utf-8">

在页面顶部,dbase 连接现在是:

$dbh = new PDO("mysql:host=$hostname;dbname=$dbname; charset=utf8;", $username, $password);

在其中添加字符集似乎已经解决了问题,并且字符现在可以正确显示,同时页面通过了 W3C 验证。

非常感谢您的帮助。

【讨论】:

  • 老年是一件可怕的事情。我今天在另一个网站上遇到了同样的问题,并且忘记了 2 年前的答案。同样,这是在谷歌搜索解决方案时出现的,只有在修复它之后,我才意识到原来的问题是我自己的:-)
【解决方案2】:

您正在寻找通常被描述为“HTML 实体”的特殊字符。具体来说,您正在寻找 ISO-8859-1 HTML 实体。您可以像这样显示这些字符中的每一个,而无需放弃 UTF-8 编码。

要显示“é”,请使用 &amp;#233;&amp;eacute;

要显示“á”,请使用 &amp;#225;&amp;aacute;

要显示“í”,请使用&amp;#237;&amp;iacute;

要显示“ú”,请使用&amp;#250;&amp;uacute;

在每种情况下,您都写&amp;...; 代替字母,包括分号。所以要写“éclair”这个词,你会使用&amp;eacute;clair

有关更多符号,您可以找到相当完整的参考here

【讨论】:

  • 既然完全可以以纯文本形式写入字符,为什么还要这样做?当您唯一需要注意的是正确处理编码时?!
  • @deceze 因为 UTF-8 有很多优点,而且他已经在使用 UTF-8,所以我给了他一种方法,他不必改变它。 UTF-8 也有很多网络传输优势,所以我更喜欢保留它并以这种方式做事。我认为仅仅因为您个人不会这样做而对我的回答投反对票是非常粗鲁的。
  • 好吧,显然 OP 是 not 正确使用 UTF-8,否则字符将正确显示在他们的网站上。帮助他们修复编码处理而不是建议这种替代方案不是更好的主意吗?此外,OP 说数据来自数据库...您是否建议他们应该重新键入数据库中的所有数据以使用 HTML 实体?
  • @William 现在通过在 dbase 连接字符串中插入一个字符集解决了这个问题 :-)
猜你喜欢
  • 1970-01-01
  • 2014-11-30
  • 2019-09-26
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 2013-08-04
  • 2012-07-14
相关资源
最近更新 更多