2012-04-29 3 views
0

私は文字列を得るoperacinėssitemos PHPスクリプトを使用してmysqlから。しかし、私は再びPHPスクリプトにこの値を送信しようとすると、私はnullが取得されている他の値を取得します。私は問題が英語以外の文字を取得するPHPスクリプトであるかもしれないと思う。何か不足していますか?JavaプログラムからPHPスクリプトに要約値を取得するには?

Javaコード:

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.single_course_layout); 

Intent in = getIntent(); 
courseName = in.getStringExtra("fullname"); 
firstname = in.getStringExtra("firstname"); 
lastname = in.getStringExtra("lastname"); 

TextView label = (TextView)findViewById(R.id.label); 
label.setText(courseName); 
String summary = null; 
TextView summaryContent = (TextView)findViewById(R.id.summary); 


ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("cname",""+courseName)); 
InputStream is = null; 
String result = null; 
try{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("********"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
}catch(Exception e){ 
     Log.e("log_tag", "Error in http connection "+e.toString()); 
} 
try{ 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is,"ISO-8859-10"),8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
       System.out.println(line); 
     } 
     is.close(); 

     result=sb.toString(); 
}catch(Exception e){ 
     Log.e("log_tag", "Error converting result "+e.toString()); 
} 

try{ 
JSONArray jArray = new JSONArray(result); 
for(int ii=0;ii<jArray.length();ii++){ 
     JSONObject json_data = jArray.getJSONObject(ii); 
     summary = json_data.getString("summary"); 
} 
summaryContent.setText(summary); 
} catch(JSONException e){ 
Log.e("log_tag", "Error parsing data "+e.toString()); 
} 

}; 

PHPスクリプト:

<?php 
    mysql_connect("localhost","***","*****"); 
    mysql_select_db("*******"); 
    mysql_query("SET NAMES utf8"); 
    $fullname = mysql_real_escape_string($_REQUEST['cname']); 

    $q=mysql_query("SELECT mdl_course.summary FROM mdl_course WHERE mdl_course.fullname = '$fullname'"); 
    while($e=mysql_fetch_assoc($q)) 
      $output[]=$e; 

    print(json_encode($output)); 

    mysql_close(); 
    ?> 

Eddited

このPHPコードは正常に動作します。私は必要な出力を見ることができます。しかし、なぜ上のスクリプトは動作しませんか?

<?php 
mysql_connect("localhost","*******","*********"); 
mysql_select_db("************"); 
$fullname = 'Operacinės sistemos'; 
$q=mysql_query("SELECT mdl_course.summary FROM mdl_course WHERE mdl_course.fullname = '$fullname'"); 
while($e=mysql_fetch_assoc($q)) 
    $output[]=$e; 
print(json_encode($output)); 
mysql_close(); 
?> 
+1

mysql_set_charset( "utf8"); 'mysql_query(" SET NAMES utf8 "); ' –

答えて

0

どのようにPHPスクリプトをUTF-8_lithuanian_ciを送信するには?

これは非常に簡単です。 utf-8_lithuanian_ciは照合であるため、照合順のデータがある瞬間にすでに完了しています。そのデータを渡すだけです。照合はソート時にのみ適用できるので、データを渡すときにデータがすでにソートされているので、何もする必要はありません。

エンコーディングについて尋ねると厳密には言えません。ただし、UTF-8エンコーディングはUTF-8ベースのため、ここではUTF-8エンコーディングを使用するのが一般的ですが、技術的には任意の異なる文字エンコーディングを使用することができますが、どちらを指定していないとしても不正確です。

さらに、PHP内でSET NAMES utf8を使用することはお勧めできません。および mysql拡張機能の使用はお勧めできません。

+0

よりも良いでしょうか? BufferedReader reader =新しいBufferedReader(新しいInputStreamReader(is、 "iso-8859-10")、8); – LTnewbie

+0

ISO -...をUTF-8に置き換えてみてください。ちょっと速い推測で、これがあなたの問題を解決するかどうかを素早くテストします。そうでなければ、デバッグをより正確に行う必要があります(実際のデバッグを行います。推測ではない、2分の修正は間違いありませんが、推測を止める)。 – hakre

+0

いいえ、それは助けにはなりませんでした。私はまだ集計値を得ることができません – LTnewbie

関連する問題