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

Incorrect rendering of Language (e.g. Arabic)

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

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

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

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

但是第二种情况呢[这是我想道歉的地方,因为它与我的编程(代码)没有直接关系] - 我对我访问的随机网站做了什么,在哪里文本(阿拉伯语)显示不正确?非常感谢任何帮助。

第二种情况:

本网站使用 Windows-1256 (Arabic), however, it wrongly declares to be encoded with ISO 8859-1(Latin/Western 欧洲)编码。如果查看源代码,您会发现它在 header.

中声明了 <meta ... charset=ISO-8859-1" />

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

对于 ASCII characters,这没有问题,因为它们在两种编码中的编码相同。然而,阿拉伯字符并非如此:每个编码字节对应一个阿拉伯字符(由 Windows-1256 编码)映射到 ISO 8859-1 编码的一些拉丁字符,而这些乱码的拉丁字符就是你请参阅代替阿拉伯语文本。

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

你可以做到这一点,例如,通过安装 Set Character Encoding 扩展,然后 right-click 在网站上和 Chrome select:

Set Character Encoding > Arabic (Windows-1256)

Safari 中,您只需 selecting:

View > Text Encoding > Arabic (Windows).

其他浏览器(例如 Firefox 或 Internet Explorer)应该也可以这样做...


第一种情况:

您的网站(您的服务器发送到浏览器的 HTML 文件)使用 UTF-8 编码。但是,这个 HTML 文件不包含任何编码声明,所以浏览器不知道这个文件是用哪种编码编码的。

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

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

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