Convert encoding before escaping
This commit is contained in:
parent
1d71a34afa
commit
8aaed3d456
@ -28,13 +28,14 @@ module Encoding #:nodoc:
|
||||
}
|
||||
|
||||
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\&')
|
||||
} + '"'
|
||||
}
|
||||
%("#{json}")
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user