Soru & Cevap

Android JSON Türkçe Karakter Sorunu

12.11.2013 - 11:13

Selamlar,

Bir android projesi geliştiriyorum. Harici bir database tutuyorum ve HTML Post metodu kullanarak, android içinden aldığım verileri yolluyorum. Yolladığım verilerde Türkçe karakter sorunu yaşıyorum. Aldığım verilerde sorun yok ama gönderdiğim verilerde sorun çıkıyor. Database'de sorun yok ona Türkçe karakter yazdırabiliyorum. Gerekli ayarları yaptım. Tek sorunum android kısmından giden karakterlerin sorun yaratması. Aşağıda veri göndermek için kullanıdğım class'ın bir kısmını yolluyorum. Yardımcı olabilecek olan var mı acaba?
 

public JSONObject makeHttpRequest(String url, String method,
            List<NameValuePair> params) {

        try {
            if(method == "POST"){
              
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();

574 Görüntülenme

6 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-29448-1413062019.jpg
teknolog.yusuf
07.08.2017 - 11:05

ÇÖZÜM JSON PAKETLERİ VE İÇ TÜRKÇE KARAKTERLER İÇİN ;

Arkadaşlar meraba, veri çekmede json paketlerinden gelen türkçe karakterler sorun yaratıyor. Aşağıda kod satırını inceleyelim;


 

class arkaPlan extends AsyncTask<String, String, String> {
protected String doInBackground(String... params) {
 HttpURLConnection connection = null;
 BufferedReader br = null;
 try {
 URL url = new URL(params[0]);
 connection = (HttpURLConnection) url.openConnection();
 connection.connect();
 InputStream is = connection.getInputStream();
 br = new BufferedReader(new InputStreamReader(is, "windows-1254"));
 String satir;
 String satirlar = "";
 while ((satir = br.readLine()) != null) {
 Log.d("satir:", satir);
 satirlar += satir; 
} return satirlar; 
} catch (Exception e) {
 }
 return "hata"; 
} 
protected void onPostExecute(String s){
 Log.d("postexecutedangelen", s);
 try { 
JSONObject jo = new JSONObject(s);
 textView2.setText(jo.getString("tarih"));
 }
    }

 br = new BufferedReader(new InputStreamReader(is, "windows-1254"));

satırına dikkat edin "windows-1254" is(inputstream) i bufferedreader aktarırken ekliyoruz.

ayrıca uygulama düzeyinde build.gradle a android kısmına;

android {

...
compileOptions.encoding='windows-1254'
}

eklerseniz sorunsuz işiniz hallolur..

Unutmayın bilgi paylaştıkça azalmaz çoğalır :)

Hepinize başarılar...

picture-8414-1469696921.jpg
bcavlak
23.01.2014 - 06:54

bende android ile get metodunda gelen utf8 karakterlerimi web tarafındaki sunucumda böyle düzeltim. Android tarafında bulamadım çözümü.

function cevir_tr($text) {
$icerik = trim($text);
$aranan = array('Ç','ç','Ğ','ğ','ı','İ','Ö','ö','Ş','ş','Ü','ü');
$degisen = array('C','c','G','g','i','I','O','o','S','s','U','u');
$yeni_metin = str_replace($aranan,$degisen,$icerik);
return $yeni_metin;
}  

picture-8337-1385290534.jpg
erhan.yilmaz
12.11.2013 - 11:46

Sorunu çözdüm. Şu şekilde yapmak lazımmış.

                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                StringEntity entity = new UrlEncodedFormEntity(params,"UTF-8");
                httpPost.setEntity(entity);

 

Çok teşekkürler yardım için

picture-8337-1385290534.jpg
erhan.yilmaz
12.11.2013 - 11:41

Koduma entegre etmeyi başardım ama çalışmadı yine aynı sorunla karşılaşıyorum.

picture-8337-1385290534.jpg
erhan.yilmaz
12.11.2013 - 11:36

kendi koduma nasıl uygulayabilirim bunu? activity içinden bu classı çağırdığım metod şu şekilde:

JSONObject json = jParser.makeHttpRequest(url, "POST", params)

Profile picture for user yasinkafadar
yasinkafadar
12.11.2013 - 11:23

Şöyle bir şey belki sorununu çözer. 

 

         HttpPost httpPost = new HttpPost(URL);

        StringEntity entity = new StringEntity(body);
        entity.setContentEncoding("UTF-8");
        httpPost.setEntity(entity);