Ruby中按照指定编码读取文件

写一个小程序时遇到的一个问题,在windows系统下读取某个包含中文的文档时,字符显示为乱码,程序实例如下:

File.open('sample.pro') do |file|
  file.each do |line|
    puts line
  end
end

然后,经过多方查找原因,怀疑是编码问题,于是修改程序打印出字符串编码如下:

File.open('sample.pro') do |file|
  file.each do |line|
    puts line.encoding
  end
end

这个时候,打印结果显示为GBK,而我的文本编码是'utf-8',显然这是编码不一致的问题。这里我也见识到了Ruby程序的一个强大之处,可以随时打印你想要显示的任何东西。那么下一步要按照指定的编码读取文件,这里有两个方法,一个是读取后进行编码的转换;另一个就是读取文件时,按照指定的编码读取文件。经过查找API,发现open函数的第二个选项可以指定编码,于是程序修改如下:


File.open('sample.pro','r:utf-8') do |file|
  file.each do |line|
    puts line
  end
end

最后程序就可以正常显示中文字符了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值