【问题标题】:Weird characters in MySQLMySQL中的奇怪字符
【发布时间】:2016-10-28 18:52:36
【问题描述】:

当我将数据插入我的 MySQL 数据库时,我得到了一些奇怪的符号。

该表设置为使用 UTF8_bin。这些符号就像

Landon?ÇÖs

?ÇÖ 应该是'

我正在通过这样的脚本传递 MySQL 表的所有行:

insert = ("INSERT INTO #{event.split(" : ")[0]} (`Date`, `Start`, `End`, `Location`, `Details`, `Map`) VALUES (#{event.split(" : ")[1]});").to_s
client = Mysql2::Client.new(:host => "hostInfo", :username => "usName", :password =>"usPass", :database => "dbName")
client.query(insert)
client.close

我也在使用 mysql2 gem 来连接数据库并将信息传递给数据库。

我做了一些挖掘,并通过尝试用不同的字符替换特殊字符来让控制台给我这个输出。这是控制台输出不兼容字符编码的错误消息:IBM437 和 UTF-8
(编码::CompatibilityError)

【问题讨论】:

  • 表可能是 utf8。 ruby->db 连接呢? ruby-> 输出环境呢?如果您将 utf8 文本转储到(例如)iso8859 显示系统中,则无济于事。
  • Marc,数据库连接是使用默认编码设置的。我不是 100% 确定输出编码是什么,但正在处理的信息并未显示给用户,以便在控制台端看到。
  • 所以字符在表本身中显示?ÇÖ?确保插入数据的任何东西最初也正确地完成了它。整个处理链必须始终保持相同的字符集,或者在“边界”处具有适当的转换逻辑。
  • 是的,字符显示在表格本身中,并且仅显示在表格中。如果我将信息输出到命令行,则 ' 显示得很好。你认为我应该在传递信息之前尝试像设置字符到 uft8 一样对信息进行处理吗?因为现在它只是将字符串作为文字传递给 MySQL 表
  • Marc,我进行了一些挖掘,并通过尝试用不同的字符替换特殊字符来让控制台给我这个输出。这是控制台输出“不兼容的字符编码:IBM437 和 UTF-8 (Encoding::CompatibilityError)”的错误消息

标签: mysql ruby rubygems mysql2


【解决方案1】:

这是一个 MySql 编码问题。将表格编码改为utf8_general_ci

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2010-09-05
    相关资源
    最近更新 更多