私は貿易によってアンドロイドの開発者ではないと言って始めたいので、何か明白でないものがあれば教えてください。MySQLデータベースからAndroidに簡体字中国語を取得するアプリケーション
私はAndroidスタジオを使用してこの相対的なシンプルなAppを作成しています。このAppを使用すると、ユーザーは自分のデータベースからアイテムを表示できます。各表には、同じ列名 "ITEMID、PICURLS、DSCR、PRICE"があります。すべてのテーブルは必要に応じて値を返しますが、DSCRはそこに入力した簡体字の代わりにQuestionmarksを返します。私は毎回私がそれについてグーグルで見つけたものであるので、私は異なる設定(utf8_unicode_co、GB2312_bin、GB2312_chinese_ci、GBK_binとGBK_chinese_ci)に照合を設定しようとしました。残念ながら、まだ成功していません...
これらのテーブルの取得は、単純なPHPスクリプトで行い、HttpsURLConnectionとBufferedReaderを使用してAndroidアプリケーションから呼び出されています。これは、アプリケーション内でデータベースへの送受信を行う唯一のコードです。
if (command.equals("GETNEWESTITEMS")) {
try {
URL url = new URL("hidden_for_privacy_reasons");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
StringBuilder builder = new StringBuilder();
builder.append(URLEncoder.encode("command", "UTF-8"));
builder.append("=");
builder.append(URLEncoder.encode(command, "UTF-8"));
builder.append("&");
builder.append(URLEncoder.encode("category", "UTF-8"));
builder.append("=");
builder.append(URLEncoder.encode(category, "UTF-8"));
String urlParameters = builder.toString();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
dStream.writeBytes(urlParameters);
dStream.flush();
dStream.close();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line = "";
StringBuilder responseOutput = new StringBuilder();
while ((line = br.readLine()) != null) {
Log.e("DatabaseTask", line);
responseOutput.append(line);
}
br.close();
echoData = responseOutput.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
これは、この特定のコマンドを行います(おそらくない最良の方法を、しかしすべては簡体字中国語の文字を除いて動作します)私のPHPスクリプトの一部だけだろう
if ($command == "GETNEWESTITEMS") {
$category = $_POST["category"];
$qry = "select * from ".$category." ORDER BY id DESC LIMIT 5";
if ($result = mysqli_query($conn, $qry)) {
echo "succes&";
while ($row = mysqli_fetch_assoc($result)) {
echo implode(',', $row).":";
}
} else {
echo "failed&".mysqli_error($conn);
}
唯一の事私は私のアプリケーションがログに返された行全体を出力してから私のアプリケーションが私の投稿要求から返ってくる応答を読み取る方法と関係があると考えることができますが、これが真であるかどうかはわかりません。それを解決する方法。
すべての提案は大歓迎です!
EDIT_01
if ($command == "GETNEWESTITEMS") {
$category = $_POST["category"];
$qry = ("set character_set_server='utf8'");
$qry = "select * from ".$category." ORDER BY id DESC LIMIT 5";
if ($result = mysqli_query($conn, $qry)) {
echo "succes&";
while ($row = mysqli_fetch_assoc($result)) {
echo implode(',', $row).":";
}
} else {
echo "failed&".mysqli_error($conn);
}
漢字保存あなたのデータベースをしていますか? – Naz141
そうですね。 phpMyAdminを開くと、すべての中国語の文字はまだそこにあります。 – sdieters
ですので、すべてのレコードを選択すると、中国語の文字は '?????? 'のように表示されます – Naz141