我有一个网页在我切换字符从ISO-8859-1设置为UTF-8的工作。 页面顶端会显示如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>[title of site]</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我只使用在页面ASCII字符,而且由于UTF-8编码的超集ASCII,这应该是罚款。 然而,在文本单引号显示为黑色钻石环绕问号。 我已经验证这些都是ASCII单引号(不直引号)。
我读过很多网上描述的解决方案,涉及PHP,魔术引号,数据库配置,等等。然而,这是不被任何程序呈现平坦的HTML页面的问题。
此外,许多谁都有这个问题被告知要切换到UTF-8来解决这个问题。 这就是我如何推出的问题。
请看看http://mch.blackcatwebinc.com/src/events.html看到这个问题。
在ASCII唯一的引号是单引号'(0×27或39)和双引号“(为0x22或33)。你有什么是8位编码,在所谓的145(0x91)和146(0x92)则以报价CP1252;它是标准的8位西欧编码Windows如果你想要的是UTF-8,你需要将其转换成UTF-8,因为它不是合法的UTF-8;有效的UTF-8使用的字符多个字节上述127(0x7F的),并放置在U + 2018和U + 2019分别开闭引号。
根据W3C的meta charset
应显示为尽可能靠近头部元件的顶部
从http://www.w3.org/International/questions/qa-html-encoding-declarations#metacontenttype
所以,我可能会尝试放置meta
以上标签title
。
此外,如由@ user1505373第一答复中提到, UTF
始终是资本并没有在后面没有空格=
在任何我看到的例子。
源代码不保存在UTF-8但Latin1的 CP1252,和那些引号不是简单引号,但U + 2019 RIGHT单引号(在Latin1的编码)。 保存在UTF-8的源文件,它会工作。
最简单的解决方法是改变UTF-8到Windows 1252中的meta
标记。 这工作,因为服务器宣布在没有编码Content-Type
头,所以浏览器和其他客户端将使用在指定的meta
标记。
名称窗口1252是用于将8位的Windows Latin-1编码,也称为CP1252和一些其他的名字(通常歪曲为“ANSI”)优选的MIME名称。
如@deceze解释的那样,数据的实际编码是窗口1252,而不是UTF-8。 或者,您可以通过节约用合适的命令文件中您的创作软件改变实际的编码设置为UTF-8。 但真正重要的是,该声明的编码匹配真实的。
另一种可能性是使用“逃脱”为撇号,如’
。 他们独立工作的编码,但他们使源代码更难以识别。
我是你的标签,我工作的网站上的一个之间看到的唯一区别是分号后的空间和UTF是小写的梦想。 尝试资本UTF。
所有的ASCII可打印字符具有等效的HTML实体代码。 一些字符通常是由最常见的OS支持的字体,有些归类为把我们带到你的渲染问题的符号。
你理应有有一个关闭单引号 ,并且为了得到它正确地打印您应该使用它的实体的代码,或&#146; 分别。 如果它原来是一个开单引号 ,那么你应该使用&#145; 代替。
请注意,没有HTML实体名称为两个ASCII字符(和更多一些 ),所以你需要选择实体代码变种。
文章来源: Single quotes showing as diamond shaped question mark in browsers (no database or PHP)