使用REXML解析XML时碰到invalid byte sequence in GBK (ArgumentError)问题

ruby更新到1.9.2后,对于编码问题碰到的少了不少,今天在Windows下,使用REXML解析一个编码为UTF-8的XML文件时,碰到了异常invalid byte sequence in GBK (ArgumentError),一看就知道是编码问题,尝试加上魔法注释# -*- coding: utf-8 -*-,仍旧异常——这只是让ruby解析器以UTF8解析代码文件,对于读写文件,这个并不管用

查看了一下读取代码,主要是这么两句

file = File.open 'G:\city.xml'
doc = REXML::Document.new file

REXML需要一个File对象,讲明对于文件的读取,实际上REXML是依靠File类的,REXML既然报GBK编码错误,那么是否说明File读取的是GBK编码的?

查了一下资料,File以系统默认编码读取文件,简体中文Windows下,默认编码是GBK。原来如此!

知道原因后就好改了,只需要在File读取时,指定读取时的编码就可以了,修改哪下

file = File.open 'G:\city.xml', 'r:utf-8'
doc = REXML::Document.new file

一切OK!

转载于:https://www.cnblogs.com/varlxj/archive/2011/10/24/2222610.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值