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

无法使用PHP在MYSQL数据库中存储阿拉伯语,php,mysql,arabic,Php,Mysql,Arabic,在过去的几个小时里,我一直在试图找到一个解决方案,但无法做到。我在互联网和这个论坛上尝试了每一种可能的解决方案,但似乎没有任何效果。问题就在这里 我想在mysql数据库的表单文本区域中存储用户将键入或粘贴的阿拉伯语数据。该网站为阿拉伯语,表单仅包含这一文本区域 要点: 该网站正在正确显示静态阿拉伯语内容。整个网站都使用utf8字符集。所以这不是问题 表(home)和内容字段(content)都设置为utf8\u unicode\u ci排序规则,因此这也不是问题 表单设置为接受charset='

在过去的几个小时里,我一直在试图找到一个解决方案,但无法做到。我在互联网和这个论坛上尝试了每一种可能的解决方案,但似乎没有任何效果。问题就在这里

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

要点:

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

表(home)和内容字段(content)都设置为utf8\u unicode\u ci排序规则,因此这也不是问题

表单设置为接受charset='utf-8',因此这也不是问题

当我在表中使用phpMyAdmin插入阿拉伯语文本时,我对它没有任何问题

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

但一旦阿拉伯文数据输入到文本区域并发送到数据库,使用insert查询将数据转换为

我正在使用

mysql_query("SET NAMES 'utf8'"); 
mysql_query('SET CHARACTER SET utf8');
连接后,所以这根本不是问题。正如我前面所说的,数据是可以检索到的。我已经上传了这两张图片。证明我的问题

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

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

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

您可以看到第二条echo语句。我添加它来调试这个问题。数据在这个回音中完美地显示出来。我想问题出在查询中。

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

1) 请确认已安装多字节扩展名。如果不这样做,PHP可能无法正确解释浏览器中的字符

2) 您是否可以再次检查该页面是否被浏览器实际拾取为UTF8。浏览器可能不确定页面所在的字符集,但仍然正确显示阿拉伯字符,因为它正在猜测如何显示这些字符。所以首先

在HTML中,添加此元标记:

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

标题(“内容类型:text/html;字符集=UTF-8”)

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

e、 我只是做了一个测试页面,向服务器上的测试页面提交一些阿拉伯语文本。在请求中,我可以看到表单编码为

Content-Length: 61
test=%26%231607%3B%26%231594%3B%26%231594%3B%26%231601%3B&go=
将文本拆分为我能看到的单个字符

%26
%231607
%3B
%26
%231594
%3B
%26
%231594
%3B%26
%231601
%3B

i、 e.阿拉伯字符的编码对我来说是正确的-也许你会看到一些不同的东西。

由于你的数据是unicode,请使用以下查询:

$sql="update home set content=N'$content'";
注意字母
N
(如国家标准中所示)


谷歌。

我没有尝试阿拉伯语,但我在上一个项目网站上尝试了我的代码, 该网站有多种语言版本。您可以只添加php函数urlencode,以便在数据库中保存内容,并使用urldecode函数检索数据内容

$content=urlencode($_POST["content"]);

echo $content;
$sql="update home set content='$content'";
用于检索/打印

echo urldecode($data['content']);

或者,如果您不想这样做,只需更改列排序规则类型“UTF8\u GENERAL\u CI”

您可能希望包含用于从POST请求获取数据并将其插入DB的代码。请尝试将accept charset属性添加到表单:
@AkhileshBChandran请阅读我已添加表单charset属性的线程。除此之外,表单还完美地显示了数据库中的阿拉伯文数据。当我试图存储数据时出现问题。@Amber我已将代码添加到线程中。请检查。@Ali:噢!对不起,我没看到你提到这件事。