【问题标题】:UTF8 Uppercase displaying incorrectlyUTF8 大写显示不正确
【发布时间】:2014-12-02 07:14:53
【问题描述】:

我有一个简单的问题,但我没有找到任何解决方案。

我在数据库(MySQL)中使用 utf8_general_ci 编码,网站中使用的是 PHP。

在 HTML 页面中也使用 utf-8 作为编码 (<meta charset="utf-8">)。

问题是,在数据库中,我存储了一个以 Â 开头的单词,在结束后它显示为 Ã,区别在于 ^ 和 ~。未编码:Â。后缀:Ã。

问题是在网站上出现这个�?在 Â 的位置,但如果我将其更改为小写,它会正常显示。只有大写字母有重音时才会出现错误。

我希望我是清楚的。

谢谢。

【问题讨论】:

  • 什么数据库管理系统?你在用asp吗? php?
  • 已编辑,我正在使用 PHP。数据库是 MySQL。感谢您的帮助。
  • 你检查过浏览器的字符编码吗?

标签: html database utf-8 store uppercase


【解决方案1】:

您只需将 lang 属性添加到网页的 html 标记。例如。将az 更改为您的语言代码。

    <!DOCTYPE html>
    <html lang="az">
      <head>
        <meta charset="utf-8" />
      </head>
      <body>

      </body>
    </html>

【讨论】:

    【解决方案2】:

    您可能还需要为 MySQL 链接设置传输字符编码。

    mysql_query('SET NAMES "utf8"');
    mysql_query('SET CHARACTER SET utf8');
    mysql_set_charset('utf8');
    

    如果这没有帮助,请确保服务器没有通过Content-Type HTTP 标头覆盖您的&lt;meta charset="utf-8"&gt;。您可能还需要使用

    覆盖它
    header('Content-Type: text/html; charset=utf-8');
    

    【讨论】:

    • 感谢您的快速答复。我会尽力做到这一点。只是一个问题,如果其他带有编码的小写单词可以工作,为什么大写字母不可以?
    • 这可能是小写重音字符与您正在通信的字符集共享相同的 UTF-8 代码,但大写字符不同,因为它们在其他编码中的其他地方不同。也许他们在小写字母之后又添加了一个字符,从而将整个大写字母部分移动了一位。
    • 它不起作用......现在字母出现了,但其他字母看起来像这样:á。这不是“解码”,如果在数据库中是 Â,它看起来像 Â,如果我放 Ã,它会出现 Ã。但是编码的那些看起来是编码的。
    • 确保带有静态文本的 php 文件使用 UTF-8 保存。如果数据库返回良好的 UTF-8 值,则浏览器显示良好的 UTF-8 值,php 文件中的静态字符不使用 UTF-8。
    • php 文件编码在首选项中是 UTF8。这就是你的意思?
    【解决方案3】:

    如您所见here,将 utf-8 解码为 windows1252 或 iso-8859-1 会产生 Ã, 而不是 Â。

    并且在 windows1252 中,有代码 E2 与它的 unicode 代码点 U+00E2 一致。 这让我认为您的应用程序的某些部分正确解码了 utf-8 字符串,但未能正确编码。

    您应该检查您的数据是否一致地存储在数据库中的 utf-8 中,也许您可​​以选择您的 varchar 数据作为 varbinary 以确保(在 sqlserver 中您可以转换为二进制,在 mysql 中我不知道是否它工作)。

    然后检查你的 html 输出的来源,看看你实际得到了什么字节。

    这不是一个正确的答案,但评论太长了......

    【讨论】:

    • 这是一条红鲱鱼,UTF-8 和 Latin-1 和 CP1252 在 160-255 范围内大部分相同,其中包括西欧的小写和大写重音字符(一些可笑的限制采样)语言。
    • 嗯,代码点重合,但 utf8 使用两个字节(都不是 E2),因此它们不相同。
    • 糟糕,重大失误,是的;感谢您的更正。 Unicode 和 Latin-1 在这个范围内是相同的,但 UTF-8 显然不是。
    • 您好!谢谢您的帮助。我不太明白您关于检查数据是否一致地存储在 db 中的 utf-8 中的提示。在我的数据库中,我在使用的字段上有 utf8_general_ci 编码,如何检查 html 输出?抱歉,我不习惯这种结尾的“东西”……
    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 2012-09-12
    • 2013-05-15
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多