阿拉伯语与PHP和MySQL


Arabic Language with PHP and MySQL

当我使用PHP代码时,我可以成功地将阿拉伯语数据存储在MySQL数据库中,但会以错误的格式返回数据。请注意以下内容:

  1. 在我的配置文件中,我有以下代码:

    $this->conn->exec("SET CHARACTER SET utf8");
    
  2. 标题更改如下:

    header('Content-Type: text/html; charset=UTF-8');
    

编码应在三点更改:

  1. 从一开始就不是utf8
  2. PDO连接将其更改为默认值
  3. 表/DB编码不是utf8

在这里,我们将检查选项#1

首先检查您的文本编码

$text = "أهلا وسهلا!";    
var_dump(mb_detect_encoding($text));

将您的文本放入$text变量中,并在浏览器中运行此脚本(仅用于编码检查)mb_detect_encoding函数应该会让您知道文本编码。

在你知道编码之后,你可以使用iconv函数并转换它。然后,使用iconv函数转换为UTF8,例如:

if(mb_detect_encoding($text)!== "UTF-8")
    $decoded_text = iconv(mb_detect_encoding($text), 'UTF-8', $text);

您应该使所有编码格式都是相同的

遵循以下步骤:

1年数据库表应具有utf8_general_ci编码

2-您的sql查询应该使用相同的查询,方法是将以下内容放在针叶树文件中的mysqli连接之后

$db->query("SET NAMES 'utf8'");

3-你的页面应该有相同的元字符编码

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

按照前面的3个步骤,一切都会顺利

要正确接受、存储和显示多字节字符集,必须确保三件事:数据库列使用正确的数据类型,脚本使用多字节安全函数编写,输出格式正确。

在MySQL中,您需要将阿拉伯语文本存储在utf8mb4类型的列中。

如果在脚本中使用任何文本编辑或格式化,则脚本需要在多字节感知编辑器中编写,并使用多字节安全功能。

最后,您的Web服务器需要发送utf-8,浏览器需要知道如何显示utf-8-请参阅如何最好地配置PHP来处理utf-8网站