v2.5.2
Giriş yap

PDO türkçe karakter sorunu

webman
1,308 defa görüntülendi

Çıldıracam :(

Veritabanında türkçe karakterlerde sorun oldugunu gördüm.
Hepsi utf8_general_ci, satırlarda sütünlarda hepsi bu şekilde..

Hatta utf8_turkish_ci de yaptım olmadı.
Pdo $db altına charsetle ilgili bir sürü kod denedim hala yok. neyi yanlış yapiyorum anlamış değilim. Çıldıracam.

head etiketleri arasında

<meta charset="UTF-8">


yazdım hala yok.. Yok oğlu yok. :(

<?php
    try {
    $db = new PDO("mysql:host=$servername;dbname=" . $dbname, $username, $password);
    $db->query("SET CHARACTER SET utf8");
    // set the PDO error mode to exception
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
?>
<?php
try {
    $db = new PDO('mysql:host=' . $servername . ';dbname=' . $dbname, $username, $password);
} catch (PDOException $e){
    die($e->getMessage());
}
?>

Lütfen yardımcı olur musunuz?

Cevap yaz
Cevaplar (6)
webman
1101 gün önce

utf8mb4 denemiştim zaten olmadı.

ALTER DATABASE veritabani_adin DEFAULT CHARACTER SET utf8 COLLATE utf8_turkish_ci

de denedim olmadı..

tek çözüm bu aşağıda yazdığım kodlar oluyor.

<?php

$db->exec("SET NAMES 'utf8'");
$db->exec("SET CHARACTER SET utf8");
$db->exec("SET CHARACTER_SET_CONNECTION=utf8");
$db->exec("SET SQL_MODE = ''");

?>

omersrn
1101 gün önce

PhpMyAdmin'i aç, veritabanını seç ve üstten SQL'e tıkla.
Ardından aşağıda ki kodu kendine göre düzenleyip sorgu kısmına gir ve "Gönder" de.

ALTER DATABASE `veritabani_adin` DEFAULT CHARACTER SET utf8 COLLATE utf8_turkish_ci

Umarım sorununu bu şekilde çözebilirsin. Bol şans.

mami
1101 gün önce

mb4 şeklinde dene bakalım charseti 'utf8mb4' yap dene
ayrıca saf pdo kodları olsun. bende denediğimde hata almıştım ve sorun altta query kodları olmasıymış.

webman
1102 gün önce

Yaptım hocam yapmaz olur muyum. İşte çıldırdığım nokta da bu :) aynı yazdığınızı yazdım. Normalde değişkenli şekilde yazmıştım konuda gibi. Sonra bunları mı görmüyor acaba diye tüm verileri sizdeki kod gibi yazdım yok. Nafile. Niye olmadığını bilmiyorum

mami
1102 gün önce

Dostum bu Yazdığın Küçük Kodlar Hikaye... $db = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "123456");
Şeklinde Yap.

webman
1102 gün önce
<?php

    $db->exec("SET NAMES 'utf8'");
    $db->exec("SET CHARACTER SET utf8");
    $db->exec("SET CHARACTER_SET_CONNECTION=utf8");
    $db->exec("SET SQL_MODE = ''");
    
?>

bu kod işimi çözdü. O kadar araştırdım. tesadüfen eski sistemde bulunan kodu aldım kullandım oldu. Hayret bişe...