无法使用 PHP 在 MYSQL 数据库中存储阿拉伯语

Ahm*_*Ali 5 php mysql arabic

过去几个小时我一直在尝试寻找解决方案,但未能成功。我已经尝试了互联网和这个论坛上的所有可能的解决方案,但似乎没有任何效果。问题就在这里。

我想存储用户将在 mysql 数据库中表单的文本区域中键入或粘贴的阿拉伯数据。该网站是阿拉伯语的,表单仅包含这一文本区域。

要点:

该网站正确显示静态阿拉伯语内容。整个网站都使用 utf8 字符集。所以这不是问题。

表( home )和内容字段( content )都设置为 utf8_unicode_ci 排序规则,因此这也不是问题。

表单设置为accept-charset='utf-8',所以这也不是问题。

当我在表中使用 phpMyAdmin 插入阿拉伯文本时,我完全没有任何问题。

事实上,当在网站上检索表中的阿拉伯文本(通过 phpMyAdmin 输入)时,它会完美显示。

但是,一旦在文本区域中输入阿拉伯语数据并发送到数据库以使用插入查询进行存储,数据就会转换为????

我在用

mysql_query("SET NAMES 'utf8'"); 
mysql_query('SET CHARACTER SET utf8');
Run Code Online (Sandbox Code Playgroud)

连接后所以这根本不是问题。正如我之前所说,数据可以正常检索。我已经上传了两张图片。展示我的问题。

我真的被困在这里,正如你所看到的,我也采取了所有可能的步骤来解决这个问题,但这种行为真的很奇怪。请帮忙。

图 1:显示数据是从同一个表中正确检索的,该表直接通过 phpMyadmin 存储

图 2 当发送到 mysql 数据库到同一个表中时显示相同的数据变成 ???

我用来将数据插入数据库的代码是:

 $content=$_POST["content"];
echo $content;
$sql="update home set content='$content'";
$result=mysql_query($sql) or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)

您可以看到第二个 echo 语句。我添加它是为了调试问题。数据在此回波中完美显示。我想问题是在查询中出现的。

Dan*_*ack 2

看起来服务器端的所有代码都运行正常。当浏览器将表单提交回服务器并且数据错误或被错误解释时,似乎会发生错误。

1) 请确认您已安装多字节扩展。如果不这样做,PHP 可能无法正确解释浏览器中的字符。http://php.net/manual/en/book.mbstring.php

2) 您能否仔细检查该页面是否确实被浏览器拾取为 UTF8。浏览器可能不确定页面采用的字符集,但仍然正确显示阿拉伯字符,因为它正在猜测如何显示它们。那么首先。

在您的 HTML 中,添加此元标记:

还要在脚本顶部添加此 PHP 标头:

header("内容类型:text/html;charset=UTF-8");

3) 如果这些不起作用,请您在浏览器中查看实际的表单提交,使用 Chrome 中的开发人员工具或 Firefox 中的 Firebug 来准确查看正在提交的内容。

例如,我刚刚做了一个测试页面,将一些阿拉伯文本提交到我的服务器上的测试页面。在请求中我可以看到表单被编码为

Content-Length: 61
test=%26%231607%3B%26%231594%3B%26%231594%3B%26%231601%3B&go=
Run Code Online (Sandbox Code Playgroud)

将文本拆分为我可以看到的单个字符

%26
%231607
%3B
%26
%231594
%3B
%26
%231594
%3B%26
%231601
%3B
Run Code Online (Sandbox Code Playgroud)

即阿拉伯字符正在为我正确编码 - 也许您会看到不同的东西。