使用php在mysql数据库中存储阿拉伯语文本

使用php在mysql数据库中存储阿拉伯语文本,php,mysql,utf-8,character-encoding,mysqli,Php,Mysql,Utf 8,Character Encoding,Mysqli,我试图在mysql数据库中存储一些阿拉伯语数据 我已将html文档字符集设置为“utf8” <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> MySQL字符集设置为:UTF-8 Unicode(utf8) MySQL连接排序规则设置为:utf8\u general\u ci 数据库和表排序规则设置为:utf8\u general\u ci 此外,在我的php代码中,我使用了$mysqli->

我试图在mysql数据库中存储一些阿拉伯语数据 我已将html文档字符集设置为“utf8”

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

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

MySQL连接排序规则设置为:utf8\u general\u ci

数据库和表排序规则设置为:utf8\u general\u ci

此外,在我的php代码中,我使用了
$mysqli->set_charset(“utf8”)
函数来确保字符集被设置为ut8,但实际上什么都不起作用,我使用html表单将数据发布到php脚本中,其中enctype为:
enctype=“multipart/form data”
,因为在这个表单中,我还上传了一个图像

奇怪的是,当我直接在mysql中编写查询时,阿拉伯字符的存储是正确的,没有问题,但是当我使用php查询来存储数据时,所有字符都存储在错误的字符集编码中

有什么建议吗

奇怪,应该有用

在成功连接到数据库后,尝试添加以下行:

$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");
}

并在php页面的标题部分包含这些元标记:

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

如果存在http头,浏览器将忽略
标记。尝试将其放在php页面的顶部:

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

将此文件保存在您的网站htdocs文件夹中,作为“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");

}

你可以试试这个。它应该可以用

<?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);
}
?>

@vahidhalaji实际上很管用!非常感谢,我尝试了$mysqli->set\u字符集(“utf8”),然后我尝试了您的解决方案,谢谢