Ruby China
  • Topics
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • Sign Up
  • Sign In
老八
@mrlaoba
Member
NO. 8305 / 2013-07-25

[email protected]
深圳
1 Topics / 2 Replies
0 Followers
0 Following
0 Favorites
No GitHub.
  • Overview
  • Topics
  • Replies
  • Favorites
  • Following
  • Followers
  • 正则表达式的 match 遇到中文时出现 “invalid byte sequence in GBK” 问题 at September 21, 2013

    后来观察发现我的文件的编码方式是 UTF8 的,也就是外编码(external encoding)是 UTF8,读进来后的内编码(internal encoding)是 GBK 的。match 把一个 UTF8 的字节流当成 GBK 去处理,然后问题就出现了。

    line.force_encoding("UTF-8")   #是修改内编码为UTF8
    set_encoding 'utf-8','GBK‘     #是将字节流转换成GBK格式的(外编码仍为UTF8)
    
  • 正则表达式的 match 遇到中文时出现 “invalid byte sequence in GBK” 问题 at September 21, 2013

    #1 楼 @nightire 谢谢 nightire 的回答。昨天试了下在 match 前添加下面代码解决了问题。

    line.force_encoding("UTF-8")
    

    然后又试了下你给的方法。读文件时使用下面代码:

    file = File.new(fr).tap{|f| f.set_encoding 'utf-8','GBK'}
    
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English