0

誰かがこの文字を使用するとしましょう: ë。EditText Box に入力すると、(php スクリプトを介して) MySQL データベースに正しく保存されます。しかし、その特殊文字でそのデータベース フィールドを取得すると、Java/Android で「null」が出力されます。

データベースが正しくセットアップされ、保存されているようです。しかし、問題は回収です。これを PHP 側で修正するか、Java/Android で処理する必要がありますか? 編集これはもうPHP側とは何の関係もないと思うので、Java側にもっと興味があります。

4

3 に答える 3

1

次のように聞こえます:android、UTF8-共有設定にUTF8が使用されていることを確認するにはどうすればよいですか?

この問題は、WebサービスとAndroidアプリの間のWebインターフェイスで発生していると思われます。一方はUTF-16またはISO8859-1文字を送信し、もう一方はそれをUTF-8として解釈します(またはその逆)。確実に:

  • AndroidからのWebリクエストがUTF-8を使用していること
  • WebサービスがUTF-8を使用して応答すること。

他の回答と同様に、HTTPデバッグプロキシを使用して、AndroidアプリとWebサービスの間で送信される文字が期待どおりであることを確認します。

于 2013-01-15T01:45:01.463 に答える
0

おそらく、UTF-8とUTF-16、またはこれらの国際文字を格納するために使用している可能性のあるその他の文字セットの間の混乱です。UTF-16では、文字ëは2バイトとして格納され、最初のバイトはヌルバイト(0x00)になります。この2バイトがUTF-8のように誤って返送された場合、ヌルバイトは文字列ターミネータの終わりと見なされます。その結果、国際文字の代わりにnull値が出力されます。

まず、国際文字がデータベースに正しく格納されていることを100%確認する必要があります。Webサイトのphpページで正しい結果を確認することは、その保証ではありません。2つの間違いがあなたに権利を与えることができるので。これまで、データベースに誤って保存された文字が、Webページや一部のシステムで正しく表示されているのをよく見かけました。別のシステムからデータベースにアクセスする必要があるまで、この時点でこれは問題ないように見えます。2番目のシステムで同じ種類のエラーを繰り返すことはできないため、すべてが壊れます。

于 2012-11-15T05:54:39.597 に答える
0

データベース アクセス コードを標準の Java Env に抽出し、コンパイルしてテストすることをお勧めします。これは、問題を特定するのに役立ちます。

通常、エンコードの問題があっても null は取得されません。他の問題を確認し、他の例外がスローされているかどうかを確認してください。

文字列が正しく挿入されていることを確認できれば、PHP の問題ではありません。

于 2012-11-15T00:57:55.080 に答える