在过去的几个小时里,我一直在试图找到一个解决方案,但无法做到。我在互联网和这个论坛上尝试了每一种可能的解决方案,但似乎没有任何效果。问题就在这里。
我想存储阿拉伯数据,用户将在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语句。我添加它来调试这个问题。数据在这个回音中完美地显示出来。我想问题出在这个问题上了。
由于您的数据是unicode,请使用以下查询:
$sql="update home set content=N'$content'";
注意字母N
(如国家标准中所示)。
googlesqln前缀字符串。
看起来服务器端的所有代码都工作正常。当浏览器将表单提交回服务器,然后数据错误或解释错误时,似乎会发生错误。
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.阿拉伯字符的编码对我来说是正确的-也许你会看到一些不同的东西。
我没有尝试阿拉伯语,但我在我的上一个项目网站上尝试了我的代码,该网站有多种语言。您可以只添加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