这可能是一个虚假的问题,但我有点迷失了。
阿拉伯语问题如何完全存储在数据库中?
让我们选择ب
,如果我直接在数据库中插入它,它就变成?
。不好。
如果我使用表单(和php脚本)并将其存储为UTF-8,它将像ب
一样存储。我可以读出并打印出来,一切都很好。
所以我的问题是,阿拉伯语(和日语,...)字母总是存储在mysql数据库ب
中吗?或者我应该在某处更改设置,当我浏览数据库时它应该看起来像ب?
只是在数据库中定义行的长度(varchars / chars)...
DB设置为utf8_general
网站完全UTF8
答案 0 :(得分:2)
如果您尝试存储UTF-8编码字符并且它变为?
,这意味着MySQL无法理解或支持您发送该字符的编码。该列需要设置为存储utf8
数据(如果支持,则更好utf8mb4
)并且连接编码需要设置为正确的编码以通知MySQL in您正在向其发送数据的编码。
如果从表单提交中获取HTML实体,这意味着浏览器尝试以不支持该特定字符的编码发送数据;因此,它必须依靠HTML实体来编码角色。您需要正确设置编码声明,告诉浏览器它应该将UTF-8编码的文本发送到服务器。
有关如何执行此操作的信息,请参阅Handling Unicode Front To Back In A Web App和/或UTF-8 all the way through。