2016-10-08 9 views
0

私は貿易によってアンドロイドの開発者ではないと言って始めたいので、何か明白でないものがあれば教えてください。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); 
     } 
+0

漢字保存あなたのデータベースをしていますか? – Naz141

+0

そうですね。 phpMyAdminを開くと、すべての中国語の文字はまだそこにあります。 – sdieters

+0

ですので、すべてのレコードを選択すると、中国語の文字は '?????? 'のように表示されます – Naz141

答えて

0

使用

$qry = ("set character_set_server='utf8'"); 
あなたの下の文の前

$qry = "select * from ".$category." ORDER BY id DESC LIMIT 5"; 
+0

私はそれを試しましたが、残念ながら視覚的に変化したものはありません。私は照合順序をそれを試すために1つのテーブルのDSCRの欄のutf8_unicode_ciに戻してみましたが、もう一度succesはありません。現在のコードはEDIT_01の下に掲載されています。私があなたの提案を誤解した場合に備えてです。 @ Your-Common-Sense、なぜこれは正確な複製ですか?私はこれと同じように適切に記述されているようなトピックは見ませんでした。 – sdieters

関連する問題