J'ai lu toutes les questions et les articles de blog liés à l'UTF-8, et j'ai l'exemple suivant dans un fichier 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
cela fonctionne parfaitement. est produit correctement le symbole © dans le fichier, et il me lit le © et l'imprime à l'écran.
mais lorsque j'utilise ce même code dans mon projet actuel, je le note dans le fichier au lieu du symbole ©: \u00A9
FWIW: J'obtiens ce résultat lors de l'exécution d'un test rspec (v1.2.9) avec mon code. la spécification produit un fichier avec un symbole ©, puis lit le fichier pour vérifier le contenu.
J'exécute cela en Ruby 1.9.2 pour le moment, mais je dois également prendre en charge tout le chemin du retour vers Ruby 1.8.6. Ceci est un environnement Windows avec des versions RubyInstaller.org de Ruby.
Si j'exécute votre code, j'obtiens une erreur sur le caractère spécial. Pouvez-vous essayer ce code?
# 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
Sur ma boîte Windows, je reçois
#<Encoding:Windows-1252>
test © foo
Je ne sais pas pourquoi le  est là ..
Lisez le fichier avec moins de code:
# encoding: UTF-8
file_content = File.open("test.txt", "r:UTF-8", &:read)
Sur quel OS fonctionne votre application? Il se peut que l'encodage par défaut du fichier soit ASCII. Est-ce que cela aide si vous ajoutez w:utf-8
et r:utf-8
aux paramètres ouverts?