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

时间:2013-08-25 11:17:44

标签: php mysql utf-8 character-encoding mysqli

我正在尝试将一些阿拉伯数据存储在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")函数来确保charset设置为ut8但实际上没有任何工作,我使用html格式将我的数据发布到php脚本,其中enctype是:enctype="multipart/form-data"因为在此表单中我还上传了图片

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

有什么建议吗?

4 个答案:

答案 0 :(得分: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">

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

}

答案 3 :(得分:0)

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

"<!-- Begin .post -->"
<h2 class="post-title">licenses new Internet</h2>
<h3 class="date-header">Thursday, 21 January 2017</h3>
<div class="post-body" style="text-align:justify;">

. . .

</div>
<div class="post-footer">
     <em>posted by Me</em>
</div>
"<!-- End .post -->"