我一直在阅读所有与UTF-8相关的问题和博客文章,我在test.rb文件中有以下示例:
# encoding: UTF-8
File.open("test.txt", "w") do |f|
f.write "test © foo"
end
File.open("test.txt", "r") do |f|
puts f.read
end
Run Code Online (Sandbox Code Playgroud)
这很完美.在文件中正确生成©符号,它将©读回我并将其打印在屏幕上.
但是当我在实际项目中使用相同的代码时,我将其写入文件而不是©符号: \u00A9
FWIW:我在对我的代码运行rspec(v1.2.9)测试时得到了这个结果.规范生成一个带有©符号的文件,然后重新读取文件以检查内容.
我目前正在Ruby 1.9.2中运行它,但我还需要支持一直回到Ruby 1.8.6.这是一个使用RubyInstaller.org版本的Ruby的Windows环境.
pet*_*ter 47
如果我执行你的代码我会在特殊字符上出错.你能试试这段代码吗?
# encoding: UTF-8
File.open("test.txt", "w:UTF-8") do |f|
f.write "test \u00A9 foo"
end
#Encoding.filesystem = "UTF-8"
p Encoding.find("filesystem")
File.open("test.txt", "r:UTF-8") do |f|
puts f.read
end
Run Code Online (Sandbox Code Playgroud)
在我的窗户盒子上我然后得到
#<Encoding:Windows-1252>
test © foo
Run Code Online (Sandbox Code Playgroud)
我不知道为什么那里..
tok*_*khi 41
用更少的代码读取文件:
# encoding: UTF-8
file_content = File.open("test.txt", "r:UTF-8", &:read)
Run Code Online (Sandbox Code Playgroud)