如何从ruby字符串中删除非UTF8字符?我有一个字符串,例如"xC2".我想从字符串中删除该字符,以便它成为有效的UTF8.
这个:
text.gsub!(/\xC2/, '')
Run Code Online (Sandbox Code Playgroud)
返回错误:
incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)
Run Code Online (Sandbox Code Playgroud)
我也在看text.unpack('U*')和string.pack,但没有得到任何结果.
我从网上获取资源,有时材料的编码不是100%UTF8字节序列有效.我使用iconv静默忽略这些序列以获得一个清理过的字符串.
@iconv = Iconv.new('UTF-8//IGNORE', 'UTF-8')
valid_string = @iconv.iconv(untrusted_string)
Run Code Online (Sandbox Code Playgroud)
但是现在iconv已被弃用,我看到它的弃用警告很多.
iconv将来会被弃用,请使用String #coding
我尝试使用String#encode's :invalid和:replace选项转换它,但它似乎没有工作(即没有删除不正确的字节序列).使用String#encode的正确方法是什么?