jsp*_*ner 7 ruby-on-rails ruby-on-rails-3 ruby-1.9
我升级到RoR 3.0.1和Ruby升级到1.9.2. 现在我视图中的所有字符串都是ASCII-8BIT?
我相信我的应用程序设置为使用UTF 8
application.rb中
config.encoding = "utf-8"
Run Code Online (Sandbox Code Playgroud)
database.yml的
development:
adapter: mysql
encoding: utf8
Run Code Online (Sandbox Code Playgroud)
我在跑
OS X
RVM rvm 1.0.16
Ruby ruby-1.9.2-p0
Rails 3.0.1
Run Code Online (Sandbox Code Playgroud)
我希望编码是UTF 8而不是ASCII
business.desc.encoding
# ASCII-8BIT
Run Code Online (Sandbox Code Playgroud)
由于1.9.x可以连接不同编码的字符串,我们会看到很多这样的错误.
<p class="description"><%= truncate(business.desc, :length => 17) %></p>
Run Code Online (Sandbox Code Playgroud)
错误
incompatible character encodings: ASCII-8BIT and UTF-8
activesupport (3.0.1) lib/active_support/core_ext/string/output_safety.rb:74:in `concat'
activesupport (3.0.1) lib/active_support/core_ext/string/output_safety.rb:74:in `concat'
actionpack (3.0.1) lib/action_view/template/handlers/erb.rb:14:in `<<'
app/views/browse/businesses.html.erb:15:in `block in _app_views_browse_businesses_html_erb___1616718260917998189_2173630500__1134905695726531092'
app/views/browse/businesses.html.erb:3:in `each'
app/views/browse/businesses.html.erb:3:in `each_with_index'
app/views/browse/businesses.html.erb:3:in `_app_views_browse_businesses_html_erb___1616718260917998189_2173630500__1134905695726531092'
Run Code Online (Sandbox Code Playgroud)
还有其他人有这个问题吗?ruby-1.9.2-p0是否使用正确的版本?
谢谢!
可怕的问题.您需要将它放在每个文件的顶部
# coding: UTF-8
Run Code Online (Sandbox Code Playgroud)
更新使用如Nerian所述的magic_encoding.
与下面的内容基本相同,但更好.
/ UPDATE
我有一个rake任务,我不记得我找到了什么(对那个人的称赞!)我稍微修改了一下,把它放在每个文件的顶部.我听说有人说上面(你做过的)应该足够了,但它对我不起作用......
无论如何,这是rake任务,只需复制粘贴即可
lib/tasks/utf8encode.rake
# coding: UTF-8
desc "Manage the encoding header of Ruby files"
task :utf8_encode_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" ||
content[0..22] == "# -*- coding: utf-8 -*-"
["\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})|(# -*- 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
Run Code Online (Sandbox Code Playgroud)
您需要将其添加到每个 .rb 文件中:
<% # coding: UTF-8 %>
Run Code Online (Sandbox Code Playgroud)
我为此使用 gem magic_encoding 。
$ cd app/
$ magic_encoding
Run Code Online (Sandbox Code Playgroud)
默认值为 UTF-8,但您可以指定任何您想要的参数作为参数。
| 归档时间: |
|
| 查看次数: |
2394 次 |
| 最近记录: |