当前位置: 首页 > 知识库问答 >
问题:

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

毕泽宇
2023-03-14

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

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

要点:

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

表(home)和内容字段(Content)都设置为utf8_unicode_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语句。我添加它来调试这个问题。数据在这个回音中完美地显示出来。我想问题出在这个问题上了。

共有3个答案

勾通
2023-03-14

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

$sql="update home set content=N'$content'";

注意字母N(如国家标准中所示)。

googlesqln前缀字符串。

米元凯
2023-03-14

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

1) 请确认已安装多字节扩展名。如果不这样做,PHP可能无法正确解释浏览器中的字符。http://php.net/manual/en/book.mbstring.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.阿拉伯字符的编码对我来说是正确的-也许你会看到一些不同的东西。

闾丘永春
2023-03-14

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

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

echo $content;
$sql="update home set content='$content'";

用于检索/打印

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

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

 类似资料:
  • 问题内容: 我已经更改了表和列的字符集,我得到的阿拉伯文本为???? MYSQL数据库中的标记 这是桌子的设计 当我再次触发选择查询时,它显示???? 作为文字? 谁能告诉我我在哪里做错了? 问题答案: 手动将阿拉伯数据插入您的Phpmyadmin。 首先,您检查数据库,表和列名称是否设置为utf8。如果未将这些设置为utf8,则首先进行设置,然后可以将阿拉伯数据插入到db表中。 对于数据库: 对

  • 我有一个关于阿拉伯语编码和将阿拉伯语存储到mysql的问题。 我应用了以下所有步骤: set-MySQL字符集:UTF-8 Unicode(utf8) 设置MySQL连接排序规则:utf8\u常规\u ci 集合数据库和表排序规则设置为:utf8\U general\U ci或utf8\U unicode\U ci mysql_查询(“设置名称‘utf8’”); mysql_查询('SET CHA

  • 问题内容: 使用JDBC驱动程序从Java中的oracle中读取oracle阿拉伯字符时遇到问题,主要问题是我找不到正确的字符编码来获取正确的数据,但是我使用此方法手动解决了问题: 此方法可以给我正确的字符,如数据库中显示的那样,但是当我尝试更新/插入阿拉伯数据时,它将保存错误的字符。例如:我的文本在数据库中另存为“ ?????????” 而不是“مرحبا”。 这是我连接到oracle数据库的方

  • 问题内容: 我正在开发一个PHP应用程序,该程序需要将各种设置存储在数据库中。客户经常询问是否可以添加或更改/删除某些内容,这已导致表格设计出现问题。基本上,我有很多布尔字段,它们仅指示是否为特定记录启用了各种设置。 为了避免使表格混乱,我考虑将数据存储为序列化数组。我已经读过,这被认为是不好的做法,但是我认为这是使用这种方法的合理案例。 有什么真正的理由避免这样做吗? 任何建议表示赞赏。 谢谢。

  • 问题内容: 我有一个Java应用程序,想要将阿拉伯语单词插入mysql数据库,我的代码看起来像 但是它只插入’??????’。我现在能做什么? 问题答案: 在db变量声明后添加此变量: 然后修改您的行: 至

  • 问题内容: 我不敢相信我无法做到这一点,但我希望能够将当前日期和时间从php存储到mysql表中。 表中的列是类型datetime。我已经试过了 但是我的时间戳记为0000-00-00 00:00:00 这一定很容易做到,但我无法使其正常运行!我想使用来自php的时间戳,而不是使用mysql now()函数 问题答案: 不要将其另存为Unix Timestamp(输出),而是另存为DATETIME