我基于最近发布的一个着名的基于php的CMS来维护两个基本平行的站点。 一个网站是英文的,一个是波兰文的。 (波兰本地化是CMS的一个标准选项。)两者都正常运行。
特别是,波兰的网站正确渲染波兰变调字符以及“特殊”的德国和西里尔字符喷洒。 当我检查CMS生成的标题时,我看到了
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
完全如我所料。 Unicode是要走的路。
英文网站正确显示英文字符,当然,加上类似的“特殊”德语和西里尔字符喷洒正确渲染。 当我检查CMS生成的标题时,我看到了
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
这不是我所期望的,正如我所知道的,iso-8859-1不能提供波兰的变音符号和西里尔字母。 (我想除了非变音符的波兰字符和西里尔字符,看起来像拉丁字符,但重叠在旁边)。
Q1:在标题中声明为ISO-8859-1编码的页面上,波兰的变音符号和西里尔字符如何正确显示? 浏览器是否可以读取BOM或对实际内容进行分析并覆盖头文件声明? 或者是什么?
Q2:是否有一个很好的技术原因,CMS的默认英文安装应该仍然使用iso-8859-1编码而不是utf-8? 我认为所有的安装应该使用utf-8编码,但没有迫切的理由来转换英文版本。 也许有人能在这里想到一个很好的理由?
A1:在发送HTML之前,Web服务器可能被configuration为在HTTP头中发送UTF-8编码。 我想你可以使用Firebug或Chrome开发者工具(Resources-> http://…- > Headers-> Response Headers)检查HTTP标头。
A2:也许他们还在使用8859-1,因为他们没有时间切换到UTF8?
Q1:CMS可能会使用HTML实体对来自ISO 8859-1代码范围之外的字符进行编码。
Q2:在这种情况下,我不知道有什么理由selectISO 8859-1而不是UTF 8。
unicode的挑战是链中的所有链接必须支持它,否则将会出现乱码。
这是一个常见的问题。 内容是否存储在数据库中? 这必须是UTF8兼容。 对于mysql,请在命令行login并发出命令
show table status
每个表都将显示sorting规则/字符集编码。
你可以在这里看到更多关于php utf8编码
https://stackoverflow.com/questions/1344692/i-need-help-fixing-broken-utf8-encoding
和更多的PHP / MySQL在这里
https://stackoverflow.com/questions/405684/php-mysql-with-encoding-problems
回答第二个问题 – UTF8中的U + 0000到U + 00FF与ISO 8859-1(Latin-1)相同。 我们使用UTF-8在我们所有的网站进行编码,没有任何困难。