1

我是具有 Perl 背景的 Ruby 新手。我遇到了一些从 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')
4

1 回答 1

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

检查字符串的编码"YourString".encoding

于 2013-05-08T13:04:13.247 回答