【发布时间】: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