2011-11-26 24 views
3

最近有一条记录被插入到包含俄文字母的mysql数据库中。数据库无法正确显示它们。有什么我可以做的,以允许我的网站上的多种语言?在MySQL数据库中允许非ASCII字符

+0

什么是列的数据类型? –

+0

它是一个varchar列 – Proffesor

+0

重新标记的已删除加密更改为字符编码。 –

回答

1

你应该看看utf8 encoding

可以请你职位是beeing使用的编码,通过你的数据库,你的桌子吗? (你能发布你的数据库的结构吗?)

编辑:在你的评论中回答你的问题,基本区别在于utf8_general_ci更快但不关心某些特定语言的比较。您可以在我的帖子中上面提交的链接中阅读更多内容。实际上它会影响排序和搜索的行为。

这无关紧要,您希望数据库的行为如何,所有这些排序规则在不同的环境中都很有用。在你的情况下,我不会使用utf8_bin,因为它只使用它的二进制值比较字符串。

+0

我有很多选项可以尝试使用utf8。你会建议utf8_bin,utf8_generel_ci还是utf8_unicode_ci? – Proffesor

+0

我编辑了我的帖子,在评论中回答您的问题,但我确实阅读了一篇文章,我在这里发布,我只需要重写文章以完全回答您的问题 –

+0

谢谢您的帮助。不幸的是,现在发生的事情是,当我看着实际的桌子时,它显示的是俄语字符,但是当它显示在我的网站上时,它仍然显示一系列问号。 – Proffesor

0

这是很久以前的事情,但是帮助我的是在执行插入语句时对utf8_decode($ variable)的帮助。

例如,如果我回显查询,它会显示字符很好,但是当执行查询时,非ASCII字符出现乱码,这是没有意义的。在做了utf8_decode($变量)后,它工作。

选择为nvarchar为列类型也可以帮助

例如查询:

$query = 'INSERT INTO table VALUES("'.utf8_decode($variable).'");';