2006-07-15 (Sat) [長年日記]
_ to_jsonのSafari対策
この間のコードだと、Safariで文字化けしてしまった。 やっぱり\u記法を使わないといけないようだ。
class String
JSON_ESCAPED = {
"\010" => '\b',
"\f" => '\f',
"\n" => '\n',
"\r" => '\r',
"\t" => '\t',
'"' => '\"',
'\\' => '\\\\'
}
def to_json
return '"' + gsub(/[\010\f\n\r\t"\\]/) { |s|
JSON_ESCAPED[s]
}.gsub(/([\xC0-\xDF][\x80-\xBF]|
[\xE0-\xEF][\x80-\xBF]{2}|
[\xF0-\xF7][\x80-\xBF]{3})+/ux) { |s|
s.unpack("U*").pack("n*").unpack("H*")[0].gsub(/.{4}/, '\\\\u\&')
} + '"'
end
end
もっと速く書ける?
[ツッコミを入れる]