Bir konuda yardımınıza ihtiyacım var. Php ile bir web servis yazdım. Mobilden kullanıcının girdiği verileri servise json olarak post ediyorum. Gönderdiğim veriler içerisinde türkçe karakter varsa veritabanına kayıt işlemi gerçekleşmiyor. Aşağıdaki gibi türkçe karakter ayarlamalarını yaptım. Fakat json verisinin çözerken bir problem oluşuyor galiba. Bu yüzden kayıt işlemi gerçekleşmiyor. Veritabanında karakter seti olarak "utf-8_unicode_ci" kullanıyorum.
$_db->query("SET NAMES 'utf8'");
$_db->query("SET CHARACTER SET utf8");
$_db->query("SET COLLATION_CONNECTION = 'utf8_turkish_ci'");

Post olarak gelen json verisine ait işlemleri de aşağıdaki gibi yapıyorum.
// add request if($_SERVER['REQUEST_METHOD']=='POST'){
$post = json_decode(file_get_contents("php://input"),true);
$result = addRequest($post['name'], $post['request'], $post['image'], $post['date'], $post['status']);
//addRequest(json_decode($post));
if(!$result) {
$data = 'Tekrar deniyiniz!';
header('HTTP/1.1 405 Reset Content');
} else {
$data = getRequest($result);
header('HTTP/1.1 201 Created');
}

} else { // get request
$data = getRequest();
header('HTTP/1.1 200 OK');
}

Bu konuda tavsiyelerinizi bekliyorum

soruldu: 09 Şub '15, 07:20

mc44's gravatar image

mc44
1.1k222732
cevap kabul oranı: 42%

değiştirildi: 09 Şub '15, 07:24

PHP dosyanızın encoding ayarını UTF-8 olarak değiştirdiniz mi ? UTF-8 BOM'suz seçeneğini de deneyebilirsiniz. NotePad++ ile kodlama değiştirmeniz mümkün.

(09 Şub '15, 14:24) ersinyildiz ersinyildiz's gravatar image

şu an zaten utf-8 bomsuz olarak kayıt edilmiş durumda fakat durum hala devam ediyor. Verileri mobilden post ile gönderdiğimde içinde türkçe karakter varsa boş bir satır ekliyor.

(10 Şub '15, 02:29) mc44 mc44's gravatar image

Bir tane php sayfası oluşturup sunucuya veri ekleme işlemini web üzerinden yapmayı denediğimde hiçbir problem olmuyor. Veriler içerisinde türkçe karakter bulunsa bile ekleme işlemi gerçekleşiyor. Acaba mobil tarafta post işlemi gerçekleştirirken bir şeyi unutuyor muyum? Mobil tarafta yapmış olduğum post işlemi aşağıdaki gibidir.

public static <T> String post(String url, T request, Class<T> classOfT) {
            String serviceResult = post(url, gson.toJson(request, classOfT));
            return serviceResult;
}

public static String post(String url, String json) {
    String result = null;
    // Making HTTP request
    try {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost post = new HttpPost(url);
        post.setHeader("Content-Type", "application/json; charset=utf-8");
        post.setEntity(new StringEntity(json));
        HttpResponse response = httpClient.execute(post);
        result = EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return result;
}
permanent link

cevaplandı: 10 Şub '15, 03:15

mc44's gravatar image

mc44
1.1k222732
cevap kabul oranı: 42%

post.setEntity( new StringEntity(json, HTTP.UTF_8)); entity'i set ederken ikinci parametreye utf8 vererek problemi düzelttim.

(10 Şub '15, 04:21) mc44 mc44's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×168
×39
×3

Soruldu: 09 Şub '15, 07:20

Görüntüleme: 1,076 kez

Son güncelleme: 10 Şub '15, 04:21

powered by BitNami OSQA