【问题标题】:MySQL UTF8 for Chrome, UTF8 for IE, but HEADER UTF8 for Chrome and UTF-8 for IE?用于 Chrome 的 MySQL UTF8,用于 IE 的 UTF8,但用于 Chrome 的 HEADER UTF8 和用于 IE 的 UTF-8?
【发布时间】:2013-01-22 09:56:48
【问题描述】:

有了这个:

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

IE 正常显示 Chrome 显示正常

有了这个:

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

(在 f 和 8 之间没有 -)

IE 用 è$ 等显示 èéàä 等。 Chrome 显示正常

然后我有一个 SQL 连接(使用 utf8_unicode_ci 或 ascii_general_ci 设置的数据库)

mysqli_set_charset('utf8')

发布结果时,IE 和 Chrome 会正确显示 èéàäö

mysqli_set_charset('utf-8')

IE 和 Chrome 显示 è$ 等或 ?????发布结果时

其他浏览器呢? 为什么?

【问题讨论】:

    标签: php unicode utf-8 character-encoding mysqli


    【解决方案1】:

    Content-Type元标记中,有效的方式是:

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

    Chrome 正常显示的原因是它更容易接受这种情况下的错误,而 IE 则要求正确编写。

    但是 MySQL 不同。他们决定使用简称。这是list of supported character sets。这是在服务器端完成的,所以不管你使用什么浏览器。

    您还可以执行以下查询:

    SHOW CHARACTER SET LIKE 'utf%'
    

    编辑:

    确保您在数据库中使用与 INSERT 相同的字符集,否则当您再次查看它时,这可能会导致不良影响。

    【讨论】:

    • 谢谢!现在...如果我设置 UTF8 IE 和 Firefox 显示为 false 并且 Chrome 正确,则在 SQL 上。如果我设置 UTF-8,则始终在 SQL 上,所有浏览器都正确显示,除了 ' 和 " 它们被发布为 ??。我该如何防止这种情况?谢谢!
    • 如果您使用的是 PHP,它可能会发送一个 Content-Type 标头。一些浏览器更喜欢这个而不是元标记。或者你可能在玩东西时手动设置了编码。查看web-sniffer.net 以查看页面发送的标头或使用类似 Firefox 或 Chrome 的 Web 开发者插件。
    • 如果我有,在数据库上:并使用 mysqli_set_charset('UTF-8') 解码 如果我使用 mysqli_set_charset('UTF8') 解码,我会正确得到 èéàè 我会得到 éèà 另一方面,如果我在数据库上有:èéàéèà 并使用 'UTF8 解码' 如果我使用 'UTF-8' 解码,我会得到 ééàè 这对我来说毫无意义......?
    • 我解决了:当我在数据库上发布表单时,我在查询之前没有设置插入字符集,所有内容都是错误的。然后在发布时对其进行编码。否则,已经正确写入数据库的文本被重新编码(解码)并返回为 NON UTC8。这是一个可能的解决方案吗?
    • 你打败了我。我只是想说,您需要确保使用相同的字符集插入。
    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 2012-02-14
    • 2013-07-09
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2014-05-17
    相关资源
    最近更新 更多