- バックアップ一覧
- ソース を表示
- バックアップ を表示
- Ruby on Rails/JSONPで受け取ったデータをEUC-JPのWebページに埋め込むには? は削除されています。
- 追加された行はこの色です。
- 削除された行はこの色です。
- Ruby on Railsを使って構築しているシステムで、ブログパーツをJSONPを使って提供する、ということをやったのでそのメモです。 ⌣
- [[JSONというgem:http://rubyforge.org/projects/json/]]があり、これを使ってハッシュなどを簡単にJSONにすることができるのでこれでやってみました。
** とりあえずJSONを出してみる [#x99cbfd3]
ソース
require "json"
render_text({"name" => "志田 裕樹"}.to_json)
結果
{"name":"\u5fd7\u7530 \u88d5\u6a39"}
** この\uXXXXは? [#w6db4349]
- [[ECMA-262 3rd Edition:http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/6_Source_Text.html]]や[[RFC 4627:http://www.7key.jp/rfc/rfc4627.html]]をみると、JavaScriptやJSONは本来はUnicodeか、JavaScript::UCS((http://subtech.g.hatena.ne.jp/miyagawa/20060614/1150253107))を使って記述するべき、らしいです。
- なので、gemのJSONはJavaScript::UCSを使って結果を返してくれたわけですね。
- JavaScript::UCSは、BMPをuXXXXの形式にするものらしく、BMPというのはつまりUCS-2という文字コードらしく、これはUnicodeファミリー(?)の一つらしい。なのでEUC-JPを\uXXXXのような形式に直してもだめだろう、と思います。
** EUC-JPやShift_JISのページにJSONを埋め込むには? [#z1b90ccb]
- ブログパーツなので、埋め込まれるWebページは、日本だとEUC-JP, Shift_JIS, UTF-8などがありえます。なので、提供されるJSONもそれぞれの文字コードである必要があります。
- 普段JavaScriptのStringをHTMLの中にDOMで埋め込んだりする場合は、Stringの中にそのWebページの文字コードと同じ文字コードの文字列をいれておけば、うまく表示されます。
- なので、JSONもとくになんの加工もせずに出してしまう...
コード
headers['Content-Type'] = "text/html;charset=euc-jp"
require "json"
require "kconv"
JSON.support_unicode = false
render_text({"name" => "志田 裕樹".kconv(Kconv::EUC, Kconv::UTF8)}.to_json)
結果
{"name":"志田 裕樹"}
これでEUC-JPのページに埋め込むことができました ^^;
#bliki(志田)