PHP和MySQL的阿拉伯语言

时间:2015-03-27 18:38:07

标签: php mysql arabic

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

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

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

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

3 个答案:

答案 0 :(得分:1)

编码应该在三点改变:

  1. 从头开始不是utf8。
  2. PDO连接将其更改为默认值。
  3. 表/数据库编码不是utf8。
  4. 这里我们将检查选项#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 :(得分:0)

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

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

如果在脚本中使用任何文本编辑或格式化,则需要在多字节识别编辑器中编写脚本并使用multi-byte safe函数。

最后你的网络服务器需要发送utf-8并且浏览器需要知道显示utf-8 - 请参阅How to best configure PHP to handle a UTF-8 website

答案 2 :(得分:0)

你应该使所有编码格式相同

按照以下步骤操作:

1 - 你的db表应该有utf8_general_ci编码

2 - 你的sql查询应该通过在conifg文件中的mysqli连接之后添加以下内容来完成相同的查询

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

3 - 您的页面应具有相同的元字符编码

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

按照前面的3个步骤进行,一切顺利