我得到的错误incompatible character encodings: UTF-8 and ASCII-8BIT
,当数据库中发现了一些字符,如认为:N,A,E等
我的环境是:
- 扶手:3.2.5
- 红宝石:1.9.4p194
- 数据库:Oracle 10g中(10.2.0.1.0)
我可以在数据库中保存这个字符,使用蟾蜍。
我试着写这篇文章,我认为第一行:
<% # encoding: utf-8 %>
在enviroment.erb
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
但是,没有什么固定的这一点。
请,有人可以给些谏固定这一点。
谢谢。
我也有同样的问题,我与猴子补丁的搜索小时后解决它。
module ActiveSupport #:nodoc:
class SafeBuffer < String
def safe_concat(value)
value = force_utf8_encoding(value)
raise SafeConcatError unless html_safe?
original_concat(value)
end
def concat(value)
value = force_utf8_encoding(value)
if !html_safe? || value.html_safe?
super(value)
else
super(ERB::Util.h(value))
end
end
alias << concat
private
def force_utf8_encoding(value)
self.force_encoding('UTF-8').html_safe unless self.encoding.name == 'UTF-8'
value = (value).force_encoding('UTF-8').html_safe unless value.nil? || value.encoding.name == 'UTF-8'
value
end
end
end
在该文件中boot.rb
,我加入这一行:
ENV['NLS_LANG'] = 'AMERICAN_AMERICA.UTF8'
白衣这个我解决我的问题。