【发布时间】:2012-10-11 18:46:12
【问题描述】:
每次我尝试将散列转换为 JSON 字符串时,都会收到 Encoding::UndefinedConversionError - "\xC2" from ASCII-8BIT to UTF-8。我尝试使用[.encode | .force_encoding](["UTF-8" | "ASCII-8BIT" ]),将.encode 与.force_encoding 链接,向后切换参数,但似乎没有任何效果,所以我发现了这样的错误:
begin
menu.to_json
rescue Encoding::UndefinedConversionError
puts $!.error_char.dump
p $!.error_char.encoding
end
其中 menu 是续集的 dataset.to_hash,内容来自 MySQL 数据库,utf8_general_ci 编码并返回:
"\xC2"
无论我使用什么.encode/.force_encoding,编码都不会改变。我什至尝试替换字符串.gsub!(/\\\xC2/),但没有运气。
有什么想法吗?
【问题讨论】:
-
1.你试过了吗?
menu.force_encoding("ISO-8859-1").encode("UTF-8")2. 在所有 .rb 文件的顶部添加“# encoding 'utf-8'` 字符串。3. 检查环境设置。终端中的$ echo LC_CTYPE是什么意思? -
第 1 步是否因错误而失败?第 2 步有效吗?对于第 3 步,thegreyblog.blogspot.in/2012/02/… 此链接包含您的程序必须运行的环境设置,以防您想避免该问题。
标签: ruby encoding sinatra sequel