• 27-12-2018, 21:04:16
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşlar merhaba,

    Yazmaya çalıştığım bir projem var. Bu projede verileri Türkçe olarak siteden alıp echo ile Ekrana Türkçe yazdırabiliyorum.
    Ancak PDO ile mysql e gönderirken karakterlerde değişmeler bozulmalar oluyor.
    Biliyorum bunu hakkında çok fazla kaynak var, bir çoğuna da baktım. Hemen hemen hepsini denedim ancak başaramadım.
    Veritabanlarım,tablolarım utf_turkish_ci dil kökenine ayarlı.
    Aşağıdaki kodu php dosyasına eklediğimde yine bir sonuç elde edemedim.

    $pdo = new PDO("mysql:host=$host;dbname=$db1",$user,$pass);
    $pdo->exec("SET NAMES 'utf8'; SET CHARSET 'utf8'");

    ş, ğ harflerinde sorun yok garip bir şekilde. Ancak Ç ç Ü ü Ö ö harflerinde sorunlar yaşıyorum.

    Yardımcı olabilecek varsa çok sevinirim.
  • 27-12-2018, 23:55:09
    #2
    veritabanını utf8_unicode_ci olarak kaydedip dener misin?
  • 28-12-2018, 00:00:44
    #3
    bilgileri bastığın sayfanın meta ya

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    ekleyip denediniz mi
  • 28-12-2018, 00:05:58
    #4
    $db->query("SET NAMES 'utf8'");
    $db->query('SET CHARACTER SET utf8');
  • 28-12-2018, 01:40:05
    #5
    Aklima hemen gelenler sunlar.
    1-veriyi aldigin sitenin karakter kodu
    2-veriyi aldiktan sonraki yaptigin veri tipi degisimlerinde olusabilecek kodlama degisikligi
    3-veri tabanindaki karakter ve karsilastirma kodu.

    -baslangis olarak sondan baslardim. Veritabanini multi-byte olarak yapki, Aklindaki sorulari silebilesin.
    CHARSET=utf8mb4 COLLATE=utf8mb4_bin

    - veriyi alirken ve gonderirken ki kodlarini bizimle paylas. bir decode yada encode var mi onlara bakalim.

    - Veriyi aldigin sitenin dil kodunu sanirim paylasmissin.
  • 28-12-2018, 06:25:04
    #6
    1.) Veritabanını ve içindeki tabloları utf8_general_ci olarak değiştir.
    .
    2.) Yazı ekleme yaptığın ve echo yaptığın sayfaların <head> taglarının arasınada <meta charset="UTF-8" /> bunu koy.

    3.) Yazı ekleme işlemini yapan php dosyasını UTF-8 olarak kaydet.

    Bu şekilde yaptığın zaman eklediğin yeni kayıtlarda sorun çıkmayacaktır, kolay gelsin.
    .
  • 28-12-2018, 10:58:32
    #7
    MythDev adlı üyeden alıntı: mesajı görüntüle
    veritabanını utf8_unicode_ci olarak kaydedip dener misin?
    DesignX adlı üyeden alıntı: mesajı görüntüle
    1.) Veritabanını ve içindeki tabloları utf8_general_ci olarak değiştir.
    .
    2.) Yazı ekleme yaptığın ve echo yaptığın sayfaların <head> taglarının arasınada <meta charset="UTF-8" /> bunu koy.

    3.) Yazı ekleme işlemini yapan php dosyasını UTF-8 olarak kaydet.

    Bu şekilde yaptığın zaman eklediğin yeni kayıtlarda sorun çıkmayacaktır, kolay gelsin.
    .
    nekadar adlı üyeden alıntı: mesajı görüntüle
    Aklima hemen gelenler sunlar.
    1-veriyi aldigin sitenin karakter kodu
    2-veriyi aldiktan sonraki yaptigin veri tipi degisimlerinde olusabilecek kodlama degisikligi
    3-veri tabanindaki karakter ve karsilastirma kodu.

    -baslangis olarak sondan baslardim. Veritabanini multi-byte olarak yapki, Aklindaki sorulari silebilesin.
    CHARSET=utf8mb4 COLLATE=utf8mb4_bin

    - veriyi alirken ve gonderirken ki kodlarini bizimle paylas. bir decode yada encode var mi onlara bakalim.

    - Veriyi aldigin sitenin dil kodunu sanirim paylasmissin.
    black_scorpion adlı üyeden alıntı: mesajı görüntüle
    $db->query("SET NAMES 'utf8'");
    $db->query('SET CHARACTER SET utf8');
    Salihweb adlı üyeden alıntı: mesajı görüntüle
    bilgileri bastığın sayfanın meta ya

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    ekleyip denediniz mi




    Arkadaşlar chrome da ekrana yazdırdığım zaman normal çıkmasının sebebi UTF 8 olarak dönüşmesi sanırım.
    Ancak ekrana utf 8 olarak yansıyıp, veritabanına utf 8 gönderemedim mi onu bilmiyorum.

    Ş İ ve ı harfleri gözüküyor. Ancak Ç ve Ü harflerinde sorun var. Bir türlü anlayamadım. Dediklerinizi yaptım ancak sonuç aynı
    Ne yapmalıyım
  • 28-12-2018, 11:15:06
    #8
    <?php
    header('Content-Type: application/json; charset=utf-8');
    $conn = mysqli_connect('localhost', 'KULLANICI', 'SIFRE', 'VERITABANI');
    if (!$conn) {
    die("Baglanamadi: " . mysqli_connect_error());
    }
    mysqli_query( $conn,"SET NAMES 'utf8' " );
    mysqli_set_charset($conn, "utf8");
    $sql='sql sorgunu buraya yaz';
    mysqli_set_charset($conn, $sql);

    ======================
    sayfani temizle birde boyle dene.
    bu arada Trayicida normal ise sorun yok. phpMyAdmin de oyle goruyorsan phpmyadmin i kurcala, veritabani ni kurcala.
  • 28-12-2018, 11:20:25
    #9
    nekadar adlı üyeden alıntı: mesajı görüntüle
    <?php
    header('Content-Type: application/json; charset=utf-8');
    $conn = mysqli_connect('localhost', 'KULLANICI', 'SIFRE', 'VERITABANI');
    if (!$conn) {
    die("Baglanamadi: " . mysqli_connect_error());
    }
    mysqli_query( $conn,"SET NAMES 'utf8' " );
    mysqli_set_charset($conn, "utf8");
    $sql='sql sorgunu buraya yaz';
    mysqli_set_charset($conn, $sql);

    ======================
    sayfani temizle birde boyle dene.
    bu arada Trayicida normal ise sorun yok. phpMyAdmin de oyle goruyorsan phpmyadmin i kurcala, veritabani ni kurcala.



    Sorun veritabanında onun farkına vardım da neden olduğunu hala anlayamadım.
    Ç ve ü Harflerine ait kodları Ç ve ü harfi ile replace edip değiştirdiğimde ? Soru işareti olarak gözüküyor.
    A harfini de ü harfi olarak değiştirdim acaba yanlış mı yapıyorum diye, yine aynı şekilde A olan heryer ? işareti oldu.
    Kafayı yemek üzereyim