php - 语言翻译不正确(例如阿拉伯语)

标签 php mysql character-encoding arabic arabic-support

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

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

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

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

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

最佳答案

对于第二种情况:

该网站的编码为 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 来执行此操作扩展名,然后右键单击该网站并选择:

Set Character Encoding > Arabic (Windows-1256)

Safari 中,您只需选择:

View > Text Encoding > Arabic (Windows).

对于其他浏览器(例如 Firefox 或 Internet Explorer)也应该有同样的效果...

<小时/>

对于第一种情况:

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

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

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

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

关于php - 语言翻译不正确(例如阿拉伯语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44728089/

相关文章:

html - 规范标签和 UTF8

php - Yii zii.widgets.CDetailView

php - 数据库中编辑类别时出错

php - 需要从从 php 转换为 jquery 的数组中按值获取索引

MYSQL 在左连接条件中使用 OR 吗?

facebook - 像 Ê 一样呈现的阿拉伯文本的编码是什么

php - 使用 cURL 向 Arduino 发送 HTTP POST

mysql - 索引和连接

php - 如何构造具有多个权限级别的多个用户?

java - 德语大写字母的字符集