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

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@965) [中] [解決]
@965■ (#3014) JSONエンコード、デコード見直す - クジラ飛行机 (2021-11-17 13:58) /低 未処理
【症状】どのような症状、現象か?
https://twitter.com/weykt/status/1460643396746244098

【再現方法】サンプルソース、再現手順など
【要望】どのような解決が望ましいか?
【バージョン】確認したバージョン
【その他】

(#3015) v1側のエンコード確認 - 通り道 (2021-11-18 21:38) /低 未処理
ソース(unit_kabin.pas)を確認した限り、以下の場合に不正な文字コードが残りそうです。
・エスケープ文字へ変換が無く\\u00xxにすべき制御文字が含まれる。
 今変換があるのは、\\\\,\\",\\b,\\f,\\t,\\r,\\n,\\u0000
・Object(Hash)のキーにエスケープが必要な文字が含まれている場合(keyにescapeを適用してない)

また、JSONをデシリアライズした場合のデータ構造はプラットフォーム依存になるので、JSONとしては正しくても環境やライブラリによってはエラーとなるというケースもあるようです。
(Objectのkeyは重複可能。ただし、key-valueのペアが同じものは不可という仕様。多くの環境では、HashTableに復元されるのでkeyに対して1つの値しか残らなかったりエラーになる)
なお、JSONは仕様でUTF-8と明記されているので、西ヨーロッパ諸語以外ではUTF-8しか使用できません(JSONに似た何か にはなります)

(#3020) JSONライブラリ差し替えが必要 - クジラ飛行机 (2022-01-01 23:06) /中 修正中
見直してみました。
(1)文字コードの問題。SJISとUNICODEでミスマッチが起きています。
(2)利用しているJSONライブラリが¥uXXXXに対応していない
かなり手を入れないといけないので、もう少し考えて作業します。

一応、本格対応する前にキーがエンコードされない問題だけは修正します。
https://github.com/kujirahand/nadesiko/commit/26c80804f8aa334ed84be86f1bc08b7f7782dd88

(#3031) キーが日本語だとデコードできないです - 雪乃☆雫 (2022-01-05 05:14) /中 修正中
JSONエンコード、デコード関係つながりで・・・

【症状】
キーに日本語が使われているJSONさんが、デコード出来ません。

【再現方法】
磯野家=空。
磯野家@「かつお」は「長男」
磯野家@「wakame」は「次女」
磯野家@「かつお」を言う。
磯野家@「wakame」を言う。

J=磯野家をJSONエンコード。
Jを表示。
J=JをUTF8N変換。
Jを表示。

磯野家=JをJSONデコード。
磯野家を表示
磯野家@「かつお」を言う。
磯野家@「wakame」を言う。

【要望】
wakameは出来ますが、かつおは出来ません。
価の方はデコードする時にSJIS変換されますが、キーはされないっぽい。
もしかすると、キーに日本語使う自体がアレなのかも知れないんですが、v3では(SJISに変換するとかが無いので当然かもですが)問題なくできるので、v1で同様にしようとしたら出来なくってツラみ・・・
v1でハッシュをJSONとして保存したものが、v1自身でデコードして使えないのも悲しいので、何とかなるとうれしいです。

(#3033) v1.585でかつお問題を修正 - クジラ飛行机 (2022-01-08 17:36) /中 確認待ち
上記、動かないサンプルをありがとうございました。
上記の点、Windows版 v1.585 (2022/01/08)で修正しました。

(#3036) 確認しました☆ - 雪乃☆雫 (2022-01-10 17:11) /中 確認待ち
早速ご対応いただき、ありがとうございます!
できました!!

(#3052) 解決にします - クジラ飛行机 (2022-02-08 11:27) /中 解決
検証ありがとうございます!
解決にしますね。感謝、感謝です!

(#3014)へ返信する:

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

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

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