写一个小程序时遇到的一个问题,在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
最后程序就可以正常显示中文字符了。