1

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

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

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

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

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

4

1 回答 1

1

对于第二种情况:

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

因此,发生的情况是服务器向您的浏览器发送了一个使用 Windows-1256 编码的 HTML 文件,但您的浏览器使用 ISO 8859-1 解码此文件(因为这是文件声称的内容)。

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

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

例如,您可以通过安装设置字符编码扩展来使用Chrome,然后右键单击该网站并选择:

设置字符编码 > 阿拉伯语 (Windows-1256)

Safari中,您只需选择:

查看 > 文本编码 > 阿拉伯语 (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">
于 2017-06-26T19:11:59.013 回答