使用REXML解析XML时碰到invalid byte sequence in GBK (ArgumentError)问题
2011-10-24 13:55
537 查看
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!
查看了一下读取代码,主要是这么两句
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!
相关文章推荐
- 【FAQ】Jenkins上,xcpretty编译报错:invalid byte sequence in US-ASCII (ArgumentError)
- ArgumentError: invalid byte sequence in UTF-8 Use --trace for backtrace.
- ruby中in `split': invalid byte sequence in UTF-8 (ArgumentError)解决方法
- ruby中in `split': invalid byte sequence in UTF-8 (ArgumentError)解决方法
- CocoaPods pod install的时候报错:invalid byte sequence in UTF-8 (ArgumentError)解决办法
- Java使用dom4j读取xml时报错:org.dom4j.DocumentException: Error on line 2 of document : Invalid byte 2 of 2-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence
- invalid byte sequence in US-ASCII (ArgumentError)
- Jenkins上,xcpretty编译报错:invalid byte sequence in US-ASCII (ArgumentError)
- 记录下 invalid byte sequence in US-ASCII (ArgumentError) 解决办法
- CocoaPods pod install的时候报错:invalid byte sequence in UTF-8 (ArgumentError)解决办法
- 部署服务的时候报错 ArgumentError: invalid byte sequence in US-ASCII
- 部署服务的时候报错 ArgumentError: invalid byte sequence in US-ASCII
- Unexpected error: Invalid byte sequence in conversion input的问题
- logstash 中报错 ArgumentError invalid byte sequence in UTF-8
- sax解析xml文件出现编码错误问题Invalid byte 1 of 1-byte UTF-8 sequence.
- Unexpected error: Invalid byte sequence in conversion input的问题
- invalid byte sequence in GBK(github rake generate 发布文章时字符乱码解决办法)
- 【Ubuntu-Tensorflow】InvalidArgumentError GPU不能使用的问题
- VINS_Mono,OpenCV Error: Bad argument (Invalid pointer to file storage) in cvGetFileNodeByName问题终于解决了
- xml解析错误:UTFDataFormatException: invalid byte 2 of 2-byte UTF-8 sequence (0xfd)