【问题标题】:Handling Cyrillic Encoding处理西里尔编码
【发布时间】:2013-10-29 00:43:55
【问题描述】:

我有一个小问题,我正在使用 .php 页面来显示俄语字符。现在,我以两种不同的方式做到这一点。我从数据库中获取的文本显示正常,但如果我显示这样的文本

<h2>привет </h2> 根本不显示。值得一提的是,我在其中包含了我的导航文件 require_once "navigation.php",我在其中声明了所有元数据等。

所以来自navigation.php:

<meta charset="Cyrillic(Windows-1251)">

到目前为止我尝试过的解决方案:

  • 为 .htaccess 添加编码
  • 使用php输出header编码
  • 使用西里尔字母 (Windows-1251)、UTF8、UTF16、iso-8859-5
  • 将文件本身保存为 UTF8

而且我没有想法。我不明白从数据库中回显文本是如何工作的,但 HTML 版本没有。

【问题讨论】:

  • 什么是“根本不显示”?我的意思是,你真的一无所获吗?如果是这样,那将是显示文本的问题,而不是编码问题。
  • 假设你得到 mojikbake,你能在编码感知编辑器中打开 php 文件吗?这表明编码是什么?而在浏览器中的结果,浏览器认为编码是什么? (例如,使用 Firefox 的“获取页面信息”)
  • @MrLister ,根本不显示意味着空白,没有任何字符。 Firefox认为UTF8是编码,应该可以显示俄文字符?我不确定“显示文本的问题”是什么意思,如果它是混合的,则该段落显示英文,但根本不显示俄文。俄语字符是从Skype convo 复制粘贴的,但我确实尝试简单地输入它们(因此它们不包含元数据),但仍然失败。 Sublime 说 UTF8
  • 我的意思是,如果问题只是编码不匹配,那么浏览器会显示 something。上面的文本,由一个认为它是 windows-1252 的程序显示,会显示为привет,而不是空白。 (即使浏览器根本无法显示西里尔字母,它也应该至少显示正方形或问号。)所以,发生了其他事情。也许您对元数据评论很满意。如果在西里尔文的中间插入一些 ASCII 字符会发生什么?自己输入一些西里尔字母,或者从可信来源、CharMap 或其他东西中复制西里尔字母。
  • 或者它可能像被 CSS 隐藏的 h2 元素一样愚蠢。

标签: php html


【解决方案1】:

这应该可以工作

<meta http-equiv="Content-Type" 
content="text/html; charset=ISO-8859-5">
<h2>привет </h2>

【讨论】:

  • 当我测试它时,它显示аПбаИаВаЕб
【解决方案2】:

所以问题出在 JS 的某个地方。对于这个项目,我得到了完整的 HTML 作品,只是为了将 PHP 与它挂钩。 HTML,除其他外,有这样的:

<script type="text/javascript" src="js/cufon-yui.js"></script>
<script type="text/javascript" src="js/cufon-replace.js"></script>

我不知道它做了什么,除了它使字体更小(为什么使用 JS 超出了我的范围)。如此简单的删除让我的字体大小更大,但可以使用西里尔字符。

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

【讨论】:

    猜你喜欢
    • 2015-06-19
    • 2014-07-16
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多