我在旧数据库中有很多记录,我需要使用ISO-1889-1格式将该数据导出为CSV,因为有西班牙语字符。
然而,当将它转换为utf-8到iso时,它会不断抛出无法转换某些字符的错误。例如:
Encoding::UndefinedConversionError - U+2026 from UTF-8 to ISO-8859-1
这发生在我控制器的这一行:
send_data(data.encode("iso-8859-1"), filename: "books_data_#{date}.csv", type: 'text/csv; charset=iso-8859-1; header=present')
为了解决这个问题,我刚刚做了string.gsub!("…", "")
。是否有更通用的方法来删除ruby字符串中的所有unicode?如果出现新的unicode字符,那么对于出现的每个人来说,手动执行操作并不完整,丑陋且难以维护。只是想知道。
答案 0 :(得分:1)
您在寻找String::encode吗?
irb(main):011:0> "Здравствуйте Stack Overflow!".encode("iso-8859-1", undef: :replace, replace: "")
=> " Stack Overflow!"