3

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

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

MySQL charset 设置为:UTF-8 Unicode (utf8)

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

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

此外,在我的 php 代码中,我使用该$mysqli->set_charset("utf8")函数确保字符集设置为 ut8 但实际上没有任何工作,我使用 enctype 所在的 html 表单将我的数据发布到 php 脚本:enctype="multipart/form-data"因为在这种表单中我也上传一个图像

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

有什么建议么 ?

4

4 回答 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");
}


并在您的 php 页面的 head 部分中包含这些 META 标记:

<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
于 2013-09-10T13:58:49.427 回答
0

<meta http-equiv ...>如果存在 http 标头,浏览器将忽略该标记。试着把它放在你的 php 页面的顶部:

header("Content-Type: text/html; charset=UTF-8");
于 2013-09-10T14:33:27.087 回答
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");

}
于 2017-01-03T03:55:33.567 回答
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);
}
?>
于 2017-03-23T18:07:36.567 回答