ruby 转码问题

世界什么能统一一下编码问题,不用转来转去了。浪费工作时间,老想着转码的事情去了。

  str = "四月的上尉 Capitães de Abril"
    str = Iconv.iconv("gbk","utf-8",str.to_s)
    puts str

老报错,就因为了多了一人字符 "ã"
抓取的网页信息,转码的部分,老出错,你们工作有遇到这样的问题 ,
这个编码要如何做才能解决,

    

问题补充:

引用

Ruby代码

   1. require'iconv' 
   2. str = "四月的上尉 Capitães de Abril"  
   3. puts Iconv.iconv("gbk//TRANSLIT","utf-8//TRANSLIT",str)  
   4. #四月的上尉 Capit~aes de Abril 
   5. puts Iconv.iconv("gbk//IGNORE","utf-8//IGNORE",str)  
   6. #四月的上尉 Capites de Abril 

require'iconv'
str = "四月的上尉 Capitães de Abril"
puts Iconv.iconv("gbk//TRANSLIT","utf-8//TRANSLIT",str)
#四月的上尉 Capit~aes de Abril
puts Iconv.iconv("gbk//IGNORE","utf-8//IGNORE",str)
#四月的上尉 Capites de Abril



你的代码,怎么一运行不报错了,你有测试过吗。我的系统是xp的。

问题补充:
D:/workruby/rubyweb/lib/movie/new_main.rb:17:in `iconv': "\313\304\324\302\265\304\311\317\316\276 Capit"... (Iconv::IllegalSequence)

:D 楼主问题解决了没有?

Iconv有很多参数的,可以试试IGNORE(可以忽略一些不可以转换的字符)和TRANSLIT(可以把不可以转换的字符用相近字符代替)

code:
[code="ruby"]
require'iconv'
str = "四月的上尉 Capitães de Abril"
puts Iconv.iconv("gbk//TRANSLIT","utf-8//TRANSLIT",str)
#四月的上尉 Capit~aes de Abril
puts Iconv.iconv("gbk//IGNORE","utf-8//IGNORE",str)
#四月的上尉 Capites de Abril
[/code]

当然测试过了,我帖代码之前都是运行过的(呵呵,不太自信的表现)。
我的也是xp。
你的代码报错的原因是UTF-8里面的字符ã"转成GBK的时候由于GBK中没有对应的字符。
加//IGNORE会忽略不可以转换的

哦,那可能是你的编码不对,如果是从网页(网页的编码是UTF-8)抓取来的不会出现这个问题。

那就是你的编辑器的问题。
在windows下推荐用SciTE
在Options=>SciTEGlobal.properties里面作如下设置:
找到类似下面配置代码,修改成下面
[code="ruby"]

Internationalisation

Japanese input code page 932 and ShiftJIS character set 128

#code.page=932
#character.set=128

Unicode

code.page=65001 #你输入的代码的编码的编码方式设置为UTF-8
#code.page=0
#character.set=204

Required for Unicode to work on GTK+:

#LC_CTYPE=en_US.UTF-8
output.code.page=932 #一般设置成output.code.page=65001,不过你这个要输出gbk编码,所以设成932
[/code]
保存。
然后再试试。

[url]http://www.iteye.com/topic/369753[/url]