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
もっと速く書ける?