我是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')
答案 0 :(得分:0)
File.open('test_rb_file.txt','r:UTF-8')
检查字符串"YourString".encoding