【发布时间】:2016-03-15 21:02:18
【问题描述】:
我在清理琴弦时遇到了很多麻烦。我们需要删除所有“奇怪的”字符,如项目符号/制表符/ ...,但保留字符,如 &é"''(§§è!!çà ....
在网上阅读了很多帖子后,我们创建了以下代码。但它会删除所有讨厌的标签,但仍保留项目符号。
def strip_tabs(value)
return "" unless value
#Clean value
if value.kind_of?(String)
value = value.squish!
encoding_options = {
:invalid => :replace, # Replace invalid byte sequences
:undef => :replace, # Replace anything not defined in ISO-8859-1
:replace => '', # Use a blank for those replacements
:UNIVERSAL_NEWLINE_DECORATOR => true # Always break lines with \n
}
value = value.encode(Encoding.find('ISO-8859-1'), encoding_options)
value = value.encode('UTF-8')
end
return value
end
脱衣前:
"•\tZefzefz\r\n•\tZefzefze\r\nZef\t zefz\t \r\n\r\n"
剥离后:
"• 泽夫兹• 泽夫泽泽夫泽"
我知道我们可以使用 gsub 或删除,但我们需要更全局的解决方案,因为您有很多像这样的奇怪字符。
我们正在运行 ruby 1.9.3p551 和 Rails 3.2.19。
亲切的问候
【问题讨论】:
-
旁注:您的代码看起来正确,它删除了 ruby 2.1 上的项目符号。
-
@mudasobwa 为什么在 ruby 1.9.3 上没有工作
-
看来这是问题所在:x:UndefinedConversionError: U+2022 from UTF-8 to ISO-8859-1
标签: ruby-on-rails ruby ruby-on-rails-3 utf-8