Opera 和 Safari 不显示 latin1 字符

Posted

技术标签:

【中文标题】Opera 和 Safari 不显示 latin1 字符【英文标题】:Opera and Safari aren't displaying latin1 characters 【发布时间】:2011-11-16 18:06:47 【问题描述】:

我无法在最新版本的 Safari 和 Opera 中显示 latin1 字符,例如“ç”、“ã”或“À”。我使用 Ajax 和 JQuery(Latin1 字符集)从 ​​RoR 后端接收数据(JSON),而网页本身依赖于 Latin1,这要归功于:

<?php header('Content-Type: text/html; charset=ISO-8859-1');?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:og="http://ogp.me/ns#"
      xmlns:fb="http://www.facebook.com/2008/fbml"
      lang="pt">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>

当我稍后执行包含大约十行代码时,我制作的自定义 javascript 库还特别声明了 ISO-8859-1:

    <script type="text/javascript" src="js/lib.js" charset="ISO-8859-1"></script>

尽管如此,之后两个浏览器都无法显示字符。 Safari 显示臭名昭著的黑色菱形,而 Opera 只是显示一个空白区域。

有什么想法吗?提前致谢

【问题讨论】:

【参考方案1】:

在您的 Content-type 中发送的字符集很可能是错误的:JSON 数据的 HTTP 标头。在您的帖子中,您显示了页面本身的标题和 META 标签以及包含的 SCRIPT,但假设 JSON 数据是单独发送的,它将被单独标记。获得一个有此问题的页面的链接会有所帮助,但如果您不想发布一个链接,您可以使用 Microsoft Fiddler HTTP 调试器之类的工具来检查在浏览器和浏览器之间来回发送的标头网站。如果 Web 服务器发送

  Content-type: text/html;charset=UTF-8

对于内容为“latin”(iso-8859-1)或反之亦然的文件,这是您的问题。修复 HTTP 标头,你会没事的。

【讨论】:

(或者,当然,Content-type: text/javascript; charset=UTF-8 - MIME 类型对于这个目的并不重要,字符集才是。) 标题很好。我们最终使用 URI 编码转换了服务器端 Ruby on Rails 后端中的所有内容,我们解决了这个问题。无论如何我都会接受你的回答,谢谢你的帮助。

以上是关于Opera 和 Safari 不显示 latin1 字符的主要内容,如果未能解决你的问题,请参考以下文章

Safari和Opera是什么浏览器

如果没有显示元素,jQuery'触发器('click')`不能处理opera

Chrome, Safari 中的 JQuery .animate() != FF, IE, Opera

instagram 图像无法在 Opera mini 中加载/显示

Safari/iPhone 和 Opera/Android 中的 JSONP 不起作用

网站在Safari中无法正常显示