MySQL中的阿拉伯语脚本错误

MySQL中的阿拉伯语脚本错误,sql,mysql,database,arabic,Sql,Mysql,Database,Arabic,我在一个包含阿拉伯语脚本的数据库中插入了数据。虽然输出正确显示阿拉伯语,但MySQL中的数据看起来像垃圾。大概是这样的: 'صَومُ ثَلاثَةِ أيّ&#157

我在一个包含阿拉伯语脚本的数据库中插入了数据。虽然输出正确显示阿拉伯语,但MySQL中的数据看起来像垃圾。大概是这样的:

 'صَومُ ثَلاثَةِ أيّامٍ مِن كُلِّ شَهرٍ ـ أربَعاءُ بَينَ خَ

我应该为此担心吗?如果是,如何在MySQL中以正确的阿拉伯语脚本显示?

这些是HTML实体

如果这篇文章

¡

就是你的数据库中应该有的东西,一切都很可能很好:你的阿拉伯语输入在某个时候被转换成这些实体

要查看上述实际阿拉伯字符,请将其插入文本文件,将其命名为
something.htm
,然后在浏览器中打开


您也可以将其转换为UTF-8编码的mySQL表中的“适当”本机字符,但要获得如何进行转换的任何指针,您必须告诉我们您使用的语言/平台。

这些是HTML实体

如果这篇文章

¡

就是你的数据库中应该有的东西,一切都很可能很好:你的阿拉伯语输入在某个时候被转换成这些实体

要查看上述实际阿拉伯字符,请将其插入文本文件,将其命名为
something.htm
,然后在浏览器中打开


您还可以将其转换为UTF-8编码的mySQL表中的“适当”本机字符,但要获得如何进行转换的任何指针,您必须告诉我们您使用的语言/平台。

正如@Pekka所说,这些是HTML实体

然而,从长远来看,我不得不认为使用UTF-8(用于数据库连接和HTML编码)可能会为您节省一些痛苦。同样,如果有可能(即,如果这是一个“新”系统而不是现有的代码库),我建议将原始数据存储在数据库中(使用mysql\u real\u escape\u string防止SQL注入等),并在输出点进行HTML编码


一般来说,这将使搜索数据变得更容易。

正如@Pekka所说,这些是HTML实体

然而,从长远来看,我不得不认为使用UTF-8(用于数据库连接和HTML编码)可能会为您节省一些痛苦。同样,如果有可能(即,如果这是一个“新”系统而不是现有的代码库),我建议将原始数据存储在数据库中(使用mysql\u real\u escape\u string防止SQL注入等),并在输出点进行HTML编码


一般来说,这将使搜索数据变得更容易,等等。

你不订阅“原始存储(mysql_real_escape_blah…,输出编码”思想流派吗?@middaparka我通常这样做,但如果他使用的是预建的第三方应用程序(看起来就是这样的)除非在我看来真的有必要,否则没有理由开始摆弄它的角色处理。没错——从长远来看,我可以看到它更痛苦(搜索的乐趣等),但这正是他所坚持的,那么它可能不值得短期的不愉快。@middaparka是的。不过,好的一点是,如果可能的话,值得考虑切换到原始数据。也许OP会澄清一下他在做什么。如果您使用不支持阿拉伯语的编码提供页面,例如
iso-8859-1
(或者如果您提供没有字符集的页面,而浏览器猜测到这一点),也可能会发生这种情况。当有人提交的表单字段中包含不受支持的字符时,浏览器会将其编码为字符引用,这是万不得已的办法。(这是一场灾难,因为你现在无法区分字符引用和真正的符号。如果你在返回页面的过程中输出没有HTML编码的用户输入,你的应用程序不仅会被破坏,而且容易受到攻击。)你不订阅“原始存储(mysql_real_escape_blah…,在输出时编码”吗思维学派?@middaparka我通常是这么认为的,但是如果他正在使用一个预构建的第三方应用程序(看起来就是这样),除非我真的需要,否则没有理由开始摆弄它的角色处理。是的,从长远来看,我可以看到它更痛苦(搜索的乐趣等),但这正是他所坚持的,“那么短期内的不愉快就不值得了。”米德帕卡:是的。不过,好的一点是,如果可能的话,值得考虑切换到原始数据。也许OP会澄清一下他在做什么。如果您使用不支持阿拉伯语的编码提供页面,例如
iso-8859-1
(或者如果您提供没有字符集的页面,而浏览器猜测到这一点),也可能会发生这种情况。当有人提交的表单字段中包含不受支持的字符时,浏览器会将其编码为字符引用,这是万不得已的办法。(这是一场灾难,因为你现在无法区分字符引用和真正的符号。如果你在返回页面的过程中输出没有HTML编码的用户输入,那么你的应用程序不仅坏了,而且容易受到攻击。)我按照你的建议做了。现在它抛出了这个错误:不正确的字符串值:“\xD8\xB3\xD9\x8F\xD8\xA6…”对于第1行的“cQuotes”列,我执行了您建议的所有操作。现在它抛出此错误:第1行的列“cQuotes”的字符串值不正确:“\xD8\xB3\xD9\x8F\xD8\xA6…”