我正在开发一个包含西班牙语字符串的Rails项目:ñ, á, é, í, ó, ú, etc
。
我必须在每个包含这些字符的文件的顶部使用“编码”注释(# coding: utf-8
),以避免在运行应用程序时出错。
如何在全局设置此选项,而不是在每个文件中键入此注释?我想它应该放在初始化器或环境文件中。
答案 0 :(得分:3)
詹姆斯·爱德华·格雷(James Edward Gray)在这个主题上有一个很好的blog post。
您不应该全局设置:您的源文件可能是utf-8编码的,但您正在使用的某个gem的作者可能使用了Shift JIS或其他东西。这将以大爆炸结束。
中间解决方案是使用rake任务来检查是否存在魔术评论,如果不存在则添加它(代码从this blog post无耻地被盗):
desc "Manage the encoding header of Ruby files"
task :check_encoding_headers => :environment do
files = Array.new
["*.rb", "*.rake"].each do |extension|
files.concat(Dir[ File.join(Dir.getwd.split(/\\/), "**", extension) ])
end
files.each do |file|
content = File.read(file)
next if content[0..16] == "# coding: utf-8\n\n"
["\n\n", "\n"].each do |file_end|
content = content.gsub(/(# encoding: utf-8#{file_end})|(# coding: utf-8#{file_end})|(# -*- coding: utf-8 -*-#{file_end})/i, "")
end
new_file = File.open(file, "w")
new_file.write("# coding: utf-8\n\n"+content)
new_file.close
end
end