首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Ruby1.9中有没有一种方法可以从字符串中删除无效的字节序列?

在Ruby1.9中有没有一种方法可以从字符串中删除无效的字节序列?
EN

Stack Overflow用户
提问于 2012-01-03 17:57:10
回答 4查看 10.6K关注 0票数 27

假设你有一个像"€foo\xA0"这样的字符串,编码为UTF-8,有没有一种方法可以从这个字符串中删除无效的字节序列?(所以你得到了"€foo" )

在ruby-1.8中,你可以使用Iconv.iconv('UTF-8//IGNORE', 'UTF-8', "€foo\xA0"),但是现在已经被弃用了。"€foo\xA0".encode('UTF-8')不做任何事情,因为它已经是UTF-8了。我试过了:

代码语言:javascript
复制
"€foo\xA0".force_encoding('BINARY').encode('UTF-8', :undef => :replace, :replace => '')

哪一项会产生

"foo"

但这也会丢失有效的多字节字符also

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-03 18:50:22

代码语言:javascript
复制
"€foo\xA0".chars.select(&:valid_encoding?).join
票数 33
EN

Stack Overflow用户

发布于 2012-01-03 18:50:30

代码语言:javascript
复制
"€foo\xA0".encode('UTF-16le', invalid: :replace, replace: '').encode('UTF-8')
票数 34
EN

Stack Overflow用户

发布于 2017-04-27 00:22:13

Ruby 2.0和1.9.3

代码语言:javascript
复制
"€foo\xA0".encode(Encoding::UTF_8, Encoding::UTF_8, :invalid => :replace)

Ruby 2.1+

代码语言:javascript
复制
"€foo\xA0".scrub
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8710444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档