2014-10-24 4 views
3

나는 그것으로부터 데이터를 얻고 ListView를 채우기 위해 온라인 데이터베이스에 연결하는 안드로이드 애플리케이션을 개발 중이다. 정보를 얻기 위해 PHP 페이지를 사용하고 있습니다. 데이터는 json을 사용하여 인코딩됩니다. 데이터베이스에는 아랍어 문자가 들어 있지만 잘 인코딩되지 않았으므로 다음과 같이 표시됩니다. "???????".안드로이드 Json 인코딩 오류

자바 코드는 다음과 같습니다

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
StrictMode.setThreadPolicy(policy); 

//httpclient = new DefaultHttpClient(); 
httpclient = new DefaultHttpClient(); 
String type2="car"; 
httppost = new HttpPost("http://www.mypage.com/myfolder/mypage.php?Username="+type2+""); 

try 
{ 
    nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("Type",type)); 
    nameValuePairs.add(new BasicNameValuePair("Date",date)); 
    nameValuePairs.add(new BasicNameValuePair("Title",title)); 
    nameValuePairs.add(new BasicNameValuePair("Content",content)); 
    nameValuePairs.add(new BasicNameValuePair("Time",time)); 

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8")); 
    response = httpclient.execute(httppost); 

    if(response.getStatusLine().getStatusCode()==200) 
    { 
     entity=response.getEntity(); 

     if(entity !=null) 
     { 
      InputStream instream=entity.getContent(); 

      try 
      { 
       JSONArray jArray = new JSONArray(convertStreamToString(instream)); 
arr=jArray; 
       // int jArrayLength = arr.length(); 
       postsinarray = new String[arr.length()]; 
       arrayinlist=new String[arr.length()]; 

       //final List<String> listContents = new ArrayList<String>(jArrayLength); 
       //thelist=listContents; 
      } 
      catch(JSONException e) 
      { 

      } 
     } 
    } 
}//End of first try 

catch(Exception e) 
{ 
    // Toast.makeText(getBaseContext(),"CONNECTION ERROR",Toast.LENGTH_LONG).show(); 
} 

PHP 코드는 다음과 같습니다

<?php 
//ini_set('default_charset','utf-8'); 
//header('content-type:text/html;charset=utf-8'); 

$host="myhost"; 
$user="myuser"; 
$pass="mypass"; 
$dbname="mydb"; 

$Username=$_GET['Username']; 

$con= mysql_connect($host,$user,$pass); 
$BD= mysql_select_db($dbname, $con); 

$query=mysql_query("select * from Todolist where Username='".$Username."' ORDER BY Date DESC"); 
$num=mysql_num_rows($query); 

//echo phpversion(); 

if($num>=1) 
{ 
    $output=array(); 
    while($list=mysql_fetch_assoc($query)) 
    { 
     $output[]=$list; 
    } 

    echo json_encode($output,JSON_UNESCAPED_UNICODE); 
    mysql_close(); 
} 
else 
{ 
    echo "error"; 
} 
?> 

어떤 도움을 주 시겠어요?

+0

브라우저에서 테스트하면 괜찮습니까? – reactivemobile

+0

아니요, 브라우저에서 링크를 사용해도 [{ "Taskid": "65", "Username": "moonwalker", "Title": "Payment", "Type1": " 지불 ","유형 ":"텍스트 ","내용 ":"여행 준비를하고 여행을 즐기기 위해 비자를 지불해야합니다. ","날짜 ":"2014-2-5 ","시간 ": "21:30"}, { "Taskid": "60", "Username": "moonwalker", "Title": "??????? ??????", "Type1": "감상", "유형": "음성", "내용": "??? ???????? ???????????????" , "Date": "2014-02-05", "Time": "19:48"}] –

+0

OK 문제는 데이터베이스에 있으므로 다른 태그로 질문을 다시 게시해야합니다. – reactivemobile

답변

1

간단한 AsyncHttp 라이브러리를 사용해야한다고 생각합니다.

단계 :

1) 프로젝트 라이브러리 폴더 안에 jar 파일을 다운로드하여 보관하십시오.

2) AsyncHttp의 인스턴스를 만듭니다.

3) URL을 제공하고 매번 많은 시간을 정정하지 않아도됩니다.

작동 예제 AsyncHttp