语言呈现不正确(例如阿拉伯语)

时间:2017-06-23 18:45:17

标签: php mysql character-encoding arabic arabic-support

如果这个问题与编程没有直接关系,我道歉。我有一个问题,我有两个例子;

  1. 我有一个网站,我将阿拉伯语单词存储在数据库中,然后检索它,并使用php将其显示在页面上。 ( Here's我的页面链接,显示阿拉伯语错误。

  2. 我访问任何随机网站,其中大部分内容应该是阿拉伯语。 (一个随机网站example给了我这个问题。

  3. 在这两种情况下,阿拉伯语文本显示为'ÇáÔíÎ:ÇáÓáÝããäÇåÇáãÊÞÏãæäÝßá'...或者这样奇怪的字符。请注意,在第一种情况下,我可能能够纠正它,因为我控制了内容。所以,我可以设置编码。

    但是第二种情况呢[这是我要道歉的地方,因为它与我的编程(代码)没有直接关系] - 我如何为我访问的随机网站做文章(阿拉伯语)显示不正确?任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

对于第二种情况:

本网站使用Windows-1256(阿拉伯语)编码,但是,它错误地声明用ISO 8859-1(拉丁文/西欧)编码。如果查看源代码,可以看到它在标题中声明了<meta ... charset=ISO-8859-1" />

所以,会发生什么情况是服务器向您的浏览器发送一个用Windows-1256编码的HTML文件,但是您的浏览器使用ISO 8859-1对此文件进行解码(因为该文件声称是)。

对于ASCII characters,这没有问题,因为它们在两种编码中编码相同。但是,阿拉伯字符不是这样:对应于阿拉伯字符的每个代码字节(由Windows-1256编码)映射到ISO 8859-1编码的某些拉丁字符,而这些乱码的拉丁字符就是您所看到的代替阿拉伯文。

如果您想正确显示本网站的所有文字,您可以手动设置浏览器用于解码本网站的字符编码。

您可以通过安装Set Character Encoding扩展程序,使用 Chrome 执行此操作,然后右键单击该网站并选择:

  

设置字符编码&gt;阿拉伯语(Windows-1256)

Safari 中,您只需选择:

即可
  

查看&gt;文字编码&gt;阿拉伯语(Windows)

其他浏览器也应该如此,例如Firefox或Internet Explorer ......

对于第一种情况:

您的网站(服务器发送到浏览器的HTML文件)使用UTF-8进行编码。但是,此HTML文件不包含任何编码声明,因此浏览器不知道此文件已编码的编码。

在这种情况下,浏览器可能会使用默认编码来解码文件,通常为ISO 8859-1 / Windows-1252(拉丁文/西欧)。结果与上述情况相同:所有阿拉伯字符都被解码为乱码拉丁字符。

要解决此问题,您必须通过在文件的标题中添加以下标记来声明您的HTML文件使用UTF-8进行编码:

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