假设你有一个像"€foo\xA0"
这样的字符串,用UTF-8编码,有没有办法从这个字符串中删除无效的字节序列?(所以你得到"€foo"
)
在ruby-1.8中,你可以使用Iconv.iconv('UTF-8//IGNORE', 'UTF-8', "€foo\xA0")
,但是现在已经弃用了。"€foo\xA0".encode('UTF-8')
没有任何作用,因为它已经是UTF-8了。
"€foo\xA0".force_encoding('BINARY').encode('UTF-8', :undef => :replace, :replace => '')
其产生"foo"
但这也会丢失有效的多字节字符€
4条答案
按热度按时间p3rjfoxz1#
kq0g1dla2#
von4xj4u3#
Ruby 2.0和1.9.3
Ruby 2.1以上版本
默认情况下,这些参数会将
\xA0
替换为符号,您可以指定不同的替换参数。kpbwa7wx4#