【问题标题】:Allow non ascii characters in MySQL database在 MySQL 数据库中允许非 ascii 字符
【发布时间】:2011-11-26 19:51:40
【问题描述】:

最近在我的 mysql 数据库中插入了一条包含俄语字母的记录。数据库无法正确显示它们。我可以做些什么来允许我的网站上使用多种语言?

【问题讨论】:

  • 列的数据类型是什么?
  • 重新标记,删除加密,改为字符编码。

标签: mysql sql database character-encoding ascii


【解决方案1】:

你应该看看utf8 encoding

能否请您发布您的数据库和表使用的编码是什么? (你能发布你的数据库的结构吗?)

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

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

【讨论】:

  • 我有很多选项可以尝试 utf8。你会推荐 utf8_bin、utf8_generel_ci 还是 utf8_unicode_ci?
  • 我已经编辑了我的帖子以在评论中回答你的问题,但我真的读过我在这里发布的一篇文章,我只需要重写文章来完全回答你的问题跨度>
  • 感谢您的帮助。不幸的是,现在发生的事情是,当我查看实际表格时,它可以很好地显示俄语字符,但是当它显示在我的网站上时,它仍然显示一系列问号。
  • 这个错误通常发生在你没有为你的连接指定编码的情况下,我不知道你使用的是哪种语言,例如在php中它是mysql_set_charset,在其他语言中你可以找到类比功能/方法,但我认为这是摆脱这个问题的方式(或者我们可以将其移至聊天)以避免垃圾邮件
【解决方案2】:

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

例如,如果我回显查询,它会很好地显示字符,但是当执行查询时,非 ASCII 字符会出现乱码,这没有任何意义。完成 utf8_decode($variable) 后,它起作用了。

选择 nvarchar 作为列类型也可能有帮助

示例查询:

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

【讨论】:

    猜你喜欢
    • 2011-01-02
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多