【发布时间】:2016-04-03 02:54:52
【问题描述】:
以下代码从 UTF-8 文件中读取内容,计算每个字符串中的字母(使用哈希)并将结果输出到另一个文件。
问题是哈希中的每个字母都表示为 utf-8 代码,而不是符号。
如何正确使用符号,而不是哈希中的 utf-8 代码?
#encoding=utf-8
#Encoding.filesystem = "UTF-8"
length = 0
letters = Hash.new(0)
File.open("hist_1.txt", "r:UTF-8") do |f|
f.each_line do |line|
line.chomp
line.chars.each do |l|
l = l.encode("Windows-1251", "UTF-8")
letters[l] += 1
end
end
end
end
a = letters.sort
#
#p a
puts a
File.open("results.txt", "w:UTF-8") { |file| file.write a }
【问题讨论】:
-
您能分享一个输入文件的例子吗?
-
dropbox.com/s/azjhhmbwy7vzjld/hist_1.txt?dl=0 无法将文件附加到帖子(
-
复制粘贴到 Dropbox 显然会使文件 utf 编码,因此没有意义。无论如何,不管你是否关心输入是
cp1251,你为什么打开它为utf-8? -
文件内容为 utf-8。我想阅读 utf-8 内容/
-
我不明白你的意思是“问题是哈希中的每个字母都表示为utf-8代码,而不是符号”,你能分享一个例子吗?不知道是不是你的终端没有正确显示utf8?