rubyでjson内のマルチバイト文字列をエスケープする

rubyでjson内のマルチバイト文字列をエスケープする方法メモ。



rubyでjson内のマルチバイト文字列をエスケープする方法


json内のマルチバイト文字列をエスケープする際は、unicodeコードポイント表記がよく使われる。


rubyでは下記のコードでunicodeコードポイント表記にエスケープできる。


[1] pry(main)> "こんにちは".unpack('U*').map{ |i| "\\u" + i.to_s(16).rjust(4, '0') }.join
=> "\\u3053\\u3093\\u306b\\u3061\\u306f"

エスケープされた上記の文字列は、json内では下記のようにデコードできる。


var hello = "\u3053\u3093\u306b\u3061\u306f";
console.log(hello);

# 出力
こんにちは

HTMLのエスケープ、javascriptのエスケープ、json内のマルチバイト文字列のエスケープはそれぞれ異なっている点にご注意ください。



参考リンク


Ruby文字列のUnicodeエスケープシーケンスをデコードする

How do I escape a Unicode string with Ruby?


著者プロフィール
Webサイトをいくつか作っています。
著者プロフィール