【症状】「JSONデコード」で大半の Unicode 数値参照 "\uXXXX" のデコードに失敗する
【再現方法】
※ \u003C (<) などのデコードが正常に出来ていません
Sとは文字列
$FF回
『000』&HEX(回数)から4文字右部分
S=『"\u』&それ&『"』
T=SをJSONデコード
S&タブ&(Tの変数型確認)&タブ&Tを表示
【バージョン】 nadesiko ver.1.533-15331
【その他】
「JSONデコード」命令は nakotter で使用しています。
Twitter API が < 等を \u003Cに encode して返してくるようになったため、
nakotter (ver.0.4以前) が正常に動かなくなっていました。
ひとまず < と > だけ置換するようにしたバグ修正版を公開しておきました。
[ nakotter ver.0.41 ]
http://www.undefin.net/nadesiko/nako/nakotter-ver.0.41.zip
数値参照の埋め込まれた JSON を扱う機会はそんなにないと思いますが、
これが正常にデコードできないのは致命的なので、よろしくお願いします。
----
ソースコードを読んでみた所、関係がありそうなのは↓だいたいこの辺のようですが…
[ json.pas (L.1036~) ]
json_tokener_state_escape_unicode:
begin
if (c in json_hex_chars_set) then
begin
inc(tok.ucs_char, (cardinal(hexdigit(c)) shl ((3-tok.st_pos)*4)));
inc(tok.st_pos);
if (tok.st_pos = 4) then
:
:
条件分岐がややこしくいまいち何をやっているのかよく分かりませんでした。
いや、 Unicode の仕様をちゃんと理解していれば分かるのだろうとは思いますが…