如何使用Ruby中的文件读取多字节字符串?见里面

时间:2013-05-08 11:01:52

标签: ruby utf-8

我是Ruby的新手,有Perl背景。我从一个utf-8编码文件读取的多字节字符串的.reverse出现了一些问题。

代码:

#!C:\Ruby200-x64\bin\ruby
puts "Content-Type:text/plain;charset=utf8\n\n" #I execute it via CGI
$: << "."
puts "А это строка".reverse #mb-string output is pretty fine
#but when I do the following, it fails;
file = File.open('test_rb_file.txt','r')
file.each_line {|line| puts line.reverse} #puts line works good, but not puts line.reverse

脚本本身在utf-8中。 test_rb_file.txt在utf-8中。因此,当我尝试输出多字节字符串时 - 一切正常,但是当我尝试从文件中读取它并反向时 - 它会失败。

我认为,指定我读取的文件(test_rb_file.txt)的编码可以解决问题,但到目前为止我还不知道如何做到这一点。我可能错了。

有任何解决问题的想法吗?提前致谢

UPD 全部修复,谢谢大家。以下内容设置输入文件的编码并修复问题:

file = File.open('test_rb_file.txt','r:UTF-8')

1 个答案:

答案 0 :(得分:0)

File.open('test_rb_file.txt','r:UTF-8')

检查字符串"YourString".encoding

的编码