0

PHP から Java (Android) に文字列を送信すると、奇妙な問題が発生します。

全体の話はかなり単純です。Java アプリケーションがキーワードを PHP スクリプトに送信します。PHP スクリプトはそれを DB で検索し、JSON でエンコードされた配列を (文字列として) Java アプリケーションに送り返します。

この文字列は Android の TextView フィールドで確認でき、次のようになります。[{"name":"Berlin"}]

しかし、Java はこれを有効な JSON 文字列として受け入れません (一部のオンライン JSON バリデーターとは異なります)。これは、「JSONArray テキストは文字 1 で '[' で開始する必要があります」という例外をスローし続けるためです。この文字列を、"equal()" を使用して Java でハードコーディングされた同一の文字列と比較すると、等しくないことがわかります。さらに厄介なことに、Java は JSON 文字列の長さを 19 ではなく 20 として返します。

これはなぜですか?ウムラウトのような珍しい文字はありません。20番目のキャラクターは何ですか?エンコーディングの問題が疑われますが、すべて (PHP ファイル、Java ファイル) が UTF-8 でエンコードされていることは確かです。

(誰かが尋ねる前に:コードを提供できますが、どの部分が関連するかわかりません。)

4

2 に答える 2

1

長さが異なる場合、先頭/末尾の空白のために違いがある可能性があります。

この質問を見てみてください。受け入れられた回答は、この問題が発生しないように文字列を前処理する方法を提供します。

于 2013-05-08T14:06:21.770 に答える
0

試す

int ascii_code = jsonString.codePointAt(0)

そしてあなたが得るものを見てください

于 2013-05-08T14:04:58.963 に答える