语言呈现不正确(例如阿拉伯语)
Incorrect rendering of Language (e.g. Arabic)
如果这个问题与编程没有直接关系,我深表歉意。我有一个问题,我有两个例子;
我有一个网站,我将阿拉伯语单词存储在数据库中,然后检索它,并使用 php 将其显示在页面上。 (Here's 我页面的 link,显示阿拉伯语不正确。)
我随便访问一个网站,其中大部分内容应该是阿拉伯语。 (一个 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">
如果这个问题与编程没有直接关系,我深表歉意。我有一个问题,我有两个例子;
我有一个网站,我将阿拉伯语单词存储在数据库中,然后检索它,并使用 php 将其显示在页面上。 (Here's 我页面的 link,显示阿拉伯语不正确。)
我随便访问一个网站,其中大部分内容应该是阿拉伯语。 (一个 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">