解决在ruby中使用xmlrpc出现的“UTF-8 regexp with ASCII-8BIT string”的问题
在使用以下代码ruby来操作wordpress的xml-rpc api的时候会出现问题。
啥都不说直接上代码
1 | # encoding: utf-8 |
控制台输出的是
D:/Ruby192/lib/ruby/1.9.1/rexml/parsers/baseparser.rb:441:in `rescue in pull': #<Encoding::CompatibilityError: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)> (REXML::ParseException)
D:/Ruby192/lib/ruby/1.9.1/rexml/source.rb:212:in `match'
D:/Ruby192/lib/ruby/1.9.1/rexml/source.rb:212:in `match'
D:/Ruby192/lib/ruby/1.9.1/rexml/parsers/baseparser.rb:425:in `pull'
D:/Ruby192/lib/ruby/1.9.1/rexml/parsers/streamparser.rb:16:in `parse'
D:/Ruby192/lib/ruby/1.9.1/rexml/document.rb:204:in `parse_stream'
D:/Ruby192/lib/ruby/1.9.1/xmlrpc/parser.rb:717:in `parse'
D:/Ruby192/lib/ruby/1.9.1/xmlrpc/parser.rb:460:in `parseMethodResponse'
D:/Ruby192/lib/ruby/1.9.1/xmlrpc/client.rb:421:in `call2'
D:/Ruby192/lib/ruby/1.9.1/xmlrpc/client.rb:410:in `call'
一看到第一句就知道又碰到了文字编码的问题。通过不停的google知道这是rexml
在File.open
文件的时候没指定文件的编码造成的,即使你使用了# encoding: utf-8
也不好用。
然后在这里看到了这段代码,把它给复制到该ruby文件里面一切就给解决了。Done