【发布时间】:2023-03-03 03:48:03
【问题描述】:
假设你有一个像"€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"
但这也失去了有效的多字节字符€
【问题讨论】:
标签: ruby encoding character-encoding ruby-1.9 utf