Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
老八
@mrlaoba
会员
第 8305 位会员 / 2013-07-25

[email protected]
深圳
1 篇帖子 / 2 条回帖
0 关注者
0 正在关注
0 收藏
未设置 GitHub 信息。
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • 正则表达式的 match 遇到中文时出现 “invalid byte sequence in GBK” 问题 at 2013年09月21日

    后来观察发现我的文件的编码方式是 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 2013年09月21日

    #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