mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Convert encoding before escaping
This commit is contained in:
parent
1d71a34afa
commit
8aaed3d456
1 changed files with 6 additions and 5 deletions
|
@ -28,13 +28,14 @@ module ActiveSupport
|
|||
}
|
||||
|
||||
def self.escape(string)
|
||||
json = '"' + string.gsub(escape_regex) { |s| ESCAPED_CHARS[s] }
|
||||
json.force_encoding('ascii-8bit') if respond_to?(:force_encoding)
|
||||
json.gsub(/([\xC0-\xDF][\x80-\xBF]|
|
||||
string = string.dup.force_encoding(::Encoding::BINARY) if string.respond_to?(:force_encoding)
|
||||
json = string.gsub(escape_regex) { |s| ESCAPED_CHARS[s] }.
|
||||
gsub(/([\xC0-\xDF][\x80-\xBF]|
|
||||
[\xE0-\xEF][\x80-\xBF]{2}|
|
||||
[\xF0-\xF7][\x80-\xBF]{3})+/nx) { |s|
|
||||
s.unpack("U*").pack("n*").unpack("H*")[0].gsub(/.{4}/, '\\\\u\&')
|
||||
} + '"'
|
||||
s.unpack("U*").pack("n*").unpack("H*")[0].gsub(/.{4}/, '\\\\u\&')
|
||||
}
|
||||
%("#{json}")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue