使用PHP将阿拉伯文本存储在MySQL数据库中

3

我正在尝试将一些阿拉伯语数据存储在MySQL数据库中,我已将HTML文档字符集设置为'utf8'

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

MySQL字符集设置为: UTF-8 Unicode (utf8)

MySQL连接排序规则设置为: utf8_general_ci

数据库和表的排序规则都设置为: utf8_general_ci

此外,我在我的PHP代码中使用了$mysqli->set_charset("utf8")函数来确保字符集设置为UTF-8,但是仍然没有生效。我使用HTML表单将数据提交到PHP脚本,其中enctype是:enctype="multipart/form-data",因为我还要上传一个图片。

奇怪的是,当我直接在MySQL中编写查询时,阿拉伯语字符可以正确存储,但是当我使用PHP查询来存储数据时,所有字符都以错误的字符集编码存储。

有什么建议吗?


@VahidHallaji,实际上它有效了!非常感谢,我尝试了$mysqli->set_charset("utf8"),然后我尝试了你的解决方案,感谢。 - Khaled Al Hage Ismail
4个回答

3
奇怪,它应该能工作!
在成功连接到数据库后,请尝试添加以下行:
$mysqli->query("SET NAMES 'utf8'");
$mysqli->query("SET CHARACTER SET utf8");

例如:


$mysqli = @new mysqli('DB_HOST', 'DB_USER', 'DB_PASS', 'DB_NAME');

if($mysqli->connect_errno) die('Connection Error!');
else{
    $mysqli->query("SET NAMES 'utf8'");
    $mysqli->query("SET CHARACTER SET utf8");
}


请将以下META标签包含在php页面的头部区域中:

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

0

如果存在HTTP头,则浏览器将忽略<meta http-equiv ...>标签。请尝试将其放置在您的PHP页面顶部:

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

0

将此文件保存在您的网站中,htdocs文件夹中,命名为"dbh.php",然后通过键入<?php include 'dbh.php';?>在您的主页顶部包含它,然后您就可以开始了。

<?php

$conn = mysqli_connect("localhost", "root", "", "database name");

if(!$conn){
    die("connection failed: ".mysqli_connect_error());
}else{
    $conn->query("SET NAMES 'utf8'");
    $conn->query("SET CHARACTER SET utf8");

}

0

你可以试试这个。应该可以工作。

<?php

$conn = mysqli_connect(<host>, <user name>, <password>, <database name>);

if(!$conn){
    die("could not connect: ".mysqli_connect_error());
}else{
    mysqli_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
}
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接