AndroidアプリケーションがPHPバックエンドデータベースと相互作用する場合、中国の文字化けコードは一般的な問題です。この記事では、開発者が中国の文字化けコードを回避および解決し、データ送信の正しさを確保するのに役立つさまざまな実用的な方法を紹介します。
PHP側がデータベースからデータを取得すると、データは通常UTF-8形式にエンコードされます。したがって、データベースとデータテーブルの文字セットがUTF8またはUTF8MB4に設定されていることを確認することが最も重要です。
MySQL構成ファイルMy.cnfに次の構成を追加します。
[mysqld] キャラクターセットサーバー= utf8 collation-server = utf8_general_ci
変更後にMySQLサービスを再起動します。次のSQLコマンドを実行して、文字セット設定を確認します。
「%文字%」などの変数を急行します。
返された結果で設定された文字がUTF8またはUTF8MB4である場合、構成は成功します。
データベースに接続した後、データ相互作用コードが一貫していることを確認するために、PHPコードのUTF8に文字セットを明示的に設定することをお勧めします。
<?php $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); mysqli_set_charset($conn, "utf8"); ?>
Android側にHTTPリクエストを送信する場合、リクエストや応答中にガラス化されたコードを防ぐために、UTF-8としてエンコードする文字を指定する必要もあります。
試すす { url url = new url( "http://www.example.com"); httpurlconnection connection =(httpurlconnection)url.openconnection(); connection.setRequestMethod( "get"); connection.setRequestProperty( "Accept-charset"、 "utf-8"); inputStream ResponseInputStream = connection.getInputStream(); } catch(ioException e){ e.printstacktrace(); }
試すす { Defaulthttpclient httpclient = new defaulthttpclient(); httpget httpget = new httpget( "http://www.example.com"); httpget.setheader( "Accept-charset"、 "utf-8"); httpresponse応答= httpclient.execute(httpget); httpentity entity = respons.getEntity(); inputstream inputstream = entity.getContent(); } catch(ioException e){ e.printstacktrace(); }
もう1つの一般的なソリューションは、中国のコンテンツをエンコードして、伝送中に文字化けしたコードを回避することです。 Androidでは、 java.net.urlencoderを使用できます。
文字列str = "中国文字列"; string encodedstr = urlencoder.encode(str、 "utf-8");
PHP側で受信した後、 URLDECODE関数を使用してデコードします。
$ str = "url%20%e7%bc%96%e7%a0%81"; $ decodedstr = urldecode($ str);
MySQLデータベース文字セット、PHP接続文字セットを適切に設定し、Androidクライアントでエンコードするリクエストを明示的に指定することにより、文字化けされた中国語の問題は効果的に回避できます。さらに、中国語でのURLエンコーディングは実用的な補助方法でもあります。開発プロセス中、上記のソリューションは実際のニーズに応じて柔軟に採用され、データ送信の精度と安定性を確保できます。