Android Studio php mysql uzak veritabanına kayıtta Türkçe karakter sorunu

Rapor et
Soru

Bu soru rapor edilmelidir hissediyorum neden kısaca açıklayınız.

Rapor et
İptal

Merhabalar arkadaşlar. Başlıktada belirttiğim bir sorunla karşılaştım. Veritabanına kayıt yaparken türkçe karakter yollarsam karakterler bozuk çıkıyor.

Aşağıda tüm kodlarımı paylaştım.

 

Yazı biraz uzun zaman lütfen değerli vaktinizden biraz ayırırsanız gerçekten çok mutlu olurum çok yardıma ihtiyacım var.

kaydı yapan java kodu

public class kayitoljava extends Fragment implements View.OnClickListener {



    EditText mail_input,sifre_input,ad_input,soyad_input,araci_input,kullaniciadi_input;
    CheckBox cb1;
    String hostsifre,mail,sifre,sonuc,sonucmesaji,ad,soyad,kullaniciadi,araci;
    String URL_POST= "http://www.denemehosting.xyz/kayit.php";
    String hata_mesaji="";
    ProgressDialog pDialog;
    Boolean hata,mecburiyet = false;
    JSONObject cevap=null;
    private static final int CUSTOM_DIALOG_ID=2;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view = inflater.inflate(R.layout.kayitollyt, container,false);

        Button cikis = (Button) view.findViewById(R.id.button6);
        mail_input = (EditText) view.findViewById(R.id.editText6);
       
     
    
        cikis.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                buttonClicked(v);

            }
        });


        return view;
    }

    public void buttonClicked (View view) {
        mail = mail_input.getText().toString();//edittext değerini alıyoruz
        



           new girisKontrol().execute(mail);


    




    }

    @Override
    public void onClick(View view) {

    }


    @SuppressLint("StaticFieldLeak")
    private class girisKontrol extends AsyncTask<String, String ,String> {
        String result;
        protected void onPreExecute() {
            //  progress dialog

            pDialog = new ProgressDialog(getActivity());
            pDialog.setMessage("Giriş Yapılıyor...");
            pDialog.setIndeterminate(true);
            pDialog.setCancelable(false);
            pDialog.show();
        }


        @Override
        protected String doInBackground(String... strings) {


            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("mail", mail));
            
            try {
                result= postClass.Post(URL_POST,params);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }

        @Override
        protected void onPostExecute(String s) {
            pDialog.dismiss();


            try {

                cevap = new JSONObject(s);
                sonucmesaji = cevap.getString("sonucmesaji");

                if (cevap.getString("sonuc") != null) {
                    sonuc = cevap.getString("sonuc");
                    if(Integer.parseInt(sonuc) == 1){ //Eğer giriş başarılı ise

                        AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
                        alertDialog.setTitle("Kayıt Yapıldı");
                        alertDialog.setMessage(sonucmesaji);
                        alertDialog.setCancelable(false);
                        alertDialog.setButton(RESULT_OK,"Tamam", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                mail_input.setText("");

                            }
                        });
                        alertDialog.show();


                    }
                    if(Integer.parseInt(sonuc) == 0){// Sonuç başarılı değil ise
                        AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
                        alertDialog.setTitle("Hata");
                        alertDialog.setMessage(sonucmesaji);//Sonuc mesajıyla bilgilendiriyoruz.
                        alertDialog.setCancelable(false);
                        alertDialog.setButton(RESULT_OK,"Tamam", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                mail_input.setText("");
                            }
                        });
                        alertDialog.show();
                    }
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }

 

 

postclass belki ihtiyacınız olur.

package hop.com.meto;

/**
 * Created by METEHAN on 25.11.2017.
 */

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.conn.params.ConnPerRouteBean;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class postClass
{
    private static HttpClient custHttpClient;
    public static final int MAX_TOTAL_CONNECTIONS = 1000;
    public static final int MAX_CONNECTIONS_PER_ROUTE = 1500;
    public static final int TIMEOUT_CONNECT = 150000;
    public static final int TIMEOUT_READ = 150000;
    public static HttpClient getHttpClient()
    { if (custHttpClient == null)
    { SchemeRegistry schemeRegistry = new SchemeRegistry();
        schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
        HttpParams connManagerParams = new BasicHttpParams(); ConnManagerParams.setMaxTotalConnections(connManagerParams, MAX_TOTAL_CONNECTIONS);
        ConnManagerParams.setMaxConnectionsPerRoute(connManagerParams, new ConnPerRouteBean(MAX_CONNECTIONS_PER_ROUTE));
        HttpConnectionParams.setConnectionTimeout(connManagerParams, TIMEOUT_CONNECT);
        HttpConnectionParams.setSoTimeout(connManagerParams, TIMEOUT_READ);
        ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(new BasicHttpParams(), schemeRegistry);
        custHttpClient = new DefaultHttpClient(cm, null);
        HttpParams para = custHttpClient.getParams();
        HttpConnectionParams.setConnectionTimeout(para, (30 * 10000));
        HttpConnectionParams.setSoTimeout(para, (30 * 10000));
        ConnManagerParams.setTimeout(para, (30 * 10000)); }
        return custHttpClient; }
    public static String Post(String urlPostFix, List<NameValuePair> postedValues) throws Exception
    { String url = urlPostFix; BufferedReader in = null;
        try { System.setProperty("http.keepAlive", "false");
            HttpClient client = getHttpClient();
            HttpPost request = new HttpPost(url);
            request.setHeader("Accept", "application/json");
            request.setHeader("Content-Type", "application/x-www-form-urlencoded");
            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postedValues);
            formEntity.setContentType("application/json");
            request.setEntity(formEntity);
            HttpResponse response = client.execute(request);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null)
            { sb.append(line + NL); }
            in.close(); String result = sb.toString();
            return result; }
        finally { if (in != null) {
            try { in.close(); }
            catch (IOException e) { } } } }
    public static String Get(String urlPostFix) throws Exception
    { String url = urlPostFix; BufferedReader in = null;
        try { HttpClient client = getHttpClient();
            HttpGet request = new HttpGet(url);
            request.setHeader("Accept", "application/json");
            request.setHeader("Content-Type", "application/x-www-form-urlencoded");
            HttpResponse response = client.execute(request);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            StringBuffer sb = new StringBuffer("");
            String line = ""; String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) { sb.append(line + NL); }
            in.close(); String result = sb.toString();
            return result; } finally { if (in != null) {
            try { in.close(); }
            catch (IOException e) { } } } }
    public static Bitmap executeImageGet(String urlPostFix) throws
            Exception { String url = urlPostFix; InputStream in = null;
        try { HttpClient client = getHttpClient();
            HttpGet request = new HttpGet(url);
            HttpResponse response = client.execute(request);
            HttpEntity entity = response.getEntity();
            BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
            in = bufHttpEntity.getContent();
            Bitmap bitmap = BitmapFactory.decodeStream(in);
            in.close(); return bitmap; }
        finally { if (in != null) { try { in.close(); } catch (IOException e) { } } } } }

 

php kodum

 

<?php


$DB_USER='u24354353445_mete0';
$DB_PASS='34543444';
$DB_HOST='localhost';
$DB_NAME='u24354353445_mete0';
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}		
  
 if($_POST){

$email = $_POST["mail"];
 
 if (filter_var($email,FILTER_VALIDATE_EMAIL))
 {
 $hata =false;
 }
 else 
 {
	 $hata =true;
 $sonucmesaji = "Mail adresi geçersiz"; 
	 
 }
 
 
 
 
 
 
 $mysqli->query("SET NAMES UTF8");
  $mysqli->query("SET CHARACTER SET utf8");
 
 
 
 
if(!$hata){
 
 
 
$sql="INSERT INTO musteri (mail) VALUES ('$email')";
 
  $sonuc=$mysqli->query($sql);
 
 if ($sonuc==0) {
      $sonucmesaji = "Kayıt sırasında bir hata olustu";
 $cevap = array('sonuc' => "0", 'sonucmesaji' =>  $sonucmesaji); }
else {


    $sonucmesaji = "Kayıt İşleminiz Başarıyla Sonuçlandı";
    $cevap = array('sonuc' => "1", 'sonucmesaji' => $sonucmesaji); 
}







	
$mysqli->close();	
}else{
 $cevap = array('sonuc' => "0",'sonucmesaji' => $sonucmesaji);
 }


 echo json_encode($cevap);

}
?>

 

Veritabanın utf8 turkish ci fakat şöyle bir durum var sorun veritabanından değil çünkü aşağıdaki html kod ile post yaparak denedim sıkıntı çıkmıyor

 

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<form action="kayit.php" method="post" >
<input type="label" name="mail">    
<input type="submit">
</form>
</body>
</html>

yani sorun android studio nun post etmesinden kaynaklı.

 

Ayrıca mail adresinde zaten türkçe karakter girince (örneğin meteş[email protected]) zaten mail adresinin geçerliliğini kontrol ederken hata vermesi ve kayıt yapmaması gerek. ( html koda bu maili girdiğimde mail kontrolünden geçmiyor bu nedenle kayıt yapmıyor. ) fakat android studioda karakter direk posttan bozuk karakterle geliyor olacakki zaten postun içinde mail adresinin yapısı değişmiş oluyor mail adresi kontrol sorgusuna böyle girip geçiyor ve kayda giriyor haliyle bozuk karakterle kayıt yapıyor.

 

 

Hal böyle arkadaşlar biraz uzun oldu kusura bakmayın ama gerçekten günlerdir uğraşıyorum artık çok bunaldım. Lütfen yardım edin…

Devam Ediyor 0
Android 2 sene 3 Cevap 731 görüntüleme Intern 0

Yazar HakkındaIntern

Cevaplar ( 3 )

  1. Avatar

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    Arkadaslar yokmu yardimci olabilecek biri ???

  2. Avatar

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    HttpClient kullanmak yerine retrofit veya volley kütüphanelerini kullanmanı öneririm hem daha hızlı hemde daha az kod yazarak işini halledebiliyorsun.

    Androidden sunucuya gönderirken karakter setini utf8 ayarlaman lazım.

    Retrofit Kullanımı: https://www.mobilhanem.com/android-retrofit-kullanimi/
    Volley kullanımı: https://www.mobilhanem.com/android-volley-kullanimi-ve-json-parse-etme/

  3. Avatar

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    Anladim hocam retrofit ve volleyi arastiricam. Fakat ogrenmek icin soruyorum yukarda yazdigim kodda utf 8 karakter setini nasil ayarlayabilirim.

Cevap bırak

Gözat

KOD PAYLAŞIRKEN DİKKAT!!!!

HTML kod paylaşmak için

<pre class="html">HTML KOD</pre>
XML kod paylaşmak için
<pre class="xml">XML KOD</pre>
Diğer dillerde(php,java,android,javasvript,c# vs..) kod paylaşmak için
<pre>KOD</pre>
tagları arasında paylaşmayı unutmayın.