나는 PHP 스크립트를 사용하여 mysql에서 operacinės sitemos 문자열을 얻습니다. 하지만이 값을 PHP 스크립트에 다시 보내고 다른 값을 얻으려고하면 null이 발생합니다. 문제는 영어가 아닌 문자를 가져 오는 PHP 스크립트와 관련이 있다고 생각합니다. 내가 놓친 게 있니?자바 프로그램에서 PHP 스크립트로 요약 값을 가져 오는 방법은 무엇입니까?
자바 코드 :
@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();
?>
아마도 mysql_set_charset ("utf8");은 mysql_query ("SET NAMES utf8"); –