让开发人员编写此方法并导致Encoding::UndefinedConversionError(“\xE2”from ASCII-8BIT to UTF-8):错误
此错误仅随机发生,因此进入原始DB字段的数据是导致问题的原因。但是,由于我对此没有任何控制,我可以在下面的方法中放置什么来解决这个问题,以便不好的数据不会导致任何问题?
def scrub_string(input, line_break = ' ')
begin
input.an_address.delete("^\u{0000}-\u{007F}").gsub("\n", line_break)
rescue
input || ''
end
end
字符串
这样行吗?
input = input.encode('utf-8', :invalid => :replace, :undef => :replace, :replace => '_')
型
2条答案
按热度按时间ddrv8njm1#
是的,这应该工作,它会取代任何奇怪的字符,不能转换成UTF-8与下划线。
在这里阅读更多关于在ruby中编码字符串的信息:
http://ruby-doc.org/core-1.9.3/String.html#method-i-encode
qc6wkl3g2#
在字符串上使用
force_encoding("UTF-8")
方法对我很有效。示例
这个例子使用了来自whois请求的随机数据(你可以自己尝试)。
这个错误对我来说:
字符串
但这个管用!
型
关键的区别是在打印字符串之前调用
force_encoding("UTF-8")
。来自here