「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@563) [中] [未処理]
@563■ (#1815) 「JSONデコード」で数値参照のデコードに失敗する - U D (2010-10-27 01:44) /中 未処理
【症状】「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 の仕様をちゃんと理解していれば分かるのだろうとは思いますが…

(#1815)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能