NASIL YAPILIR? Türkçe Karakter Sorunu Çözümleri

arcface

Âyinesi iştir kişinin lafa bakılmaz
Kayıtlı Kullanıcı
Katılım
25 Eyl 2020
Mesajlar
216
Tepkime puanı
162
Puanları
48
Konum
istanbul
Web sitesi
www.arcface.net
Merhabalar,

Türkçe karakter sorunu neden çıkar ? Çözümleri nelerdir ? bunları detaylıca görsel ve yazılı olarak anlatacağım.


İlk olarak her türlü tek sayfalık çalışma veya panel,script fark etmez her türlü çalışmada <head> </head> etiketleri arasına hangi dilde yazı yazdığını tarayıca bildirmek için bir meta etiketi belirtmek gerekiyor peki bu meta etiketini nasıl belirtiriz.


html 5'de bu meta etiketi : <meta charset="UTF-8"> bu şekil'de kullanılabilir.

html'de ise bu meta etiketi : <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> şeklindedir.

Tabi ki bu dilleri sadece html'de mi girebiliyoruz ben yapıyı tamamen php yaptım der iseniz'de ozaman'da size header(); Fonksiyonu devreye girip yardımcı oluyor, kullanımı şu şekildedir.

header(“Content-Type: text/html; charset=ISO-8859-9”);

bunu php ile yazabilirsiniz html karşılığı bu şekildedir.
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-9″ />

Yukarda bahsettiğim şeyler tarayıcının okuması içindi.

Birde veri tabanına kaydedilen veriler var buradaki hatalar da genellikle direkt tablo adı ve sütunları girip farklı ayar yapmadan oluşturduklarından kaynaklanıyor tablo özelliklerinde karakter kodlamayı girmeyi unutuyorlar ve o veri tabanında standart karakter kodlaması ne ise otomatik o seçili oluyor bunu önlemek için ya veri tabanındaki genel karakter kodlamayı yada tablonun karakter kodlamasını değiştirmelisiniz. Ben standart olarak her zaman utf8-general-ci kullanıyorum hiç bir karakterde sorun yaşamıyorum.

Bir diğer kısma gelecek olursak veri tabanına bağlantı sağlarken karakter kodlaması belirtilmediğinde oluşan karakter sorunu var bunun çözümü de sırasıyla

mysql'de mysql_query komutu ile ;

mysql_query(“SET NAMES ‘utf8′”);
mysql_query(“SET CHARACTER SET utf8”);


mysql_li'de ise ;
mysql_set_charset("utf8");

şeklinde çözebilir pdo kodlamalarında exec fonksiyonu ile ayrı olarak belirte bilir;
exec("SET NAMES 'utf8'; SET CHARSET 'utf8'");

veya direk PDO sınıfına parametre olarak yazabilirsiniz. Bu şekilde ;
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "123456");

Son olarak da editör ile dosyayı kaydederken karakter kodlamasının bozulması ve çoğunlukla bu sebepten bozarlar ve nasıl olduğunu anlamazlar.
Bu örneği 2 editör üzerinden anlatacağım çünkü tüm editörler de işlemler bire bir aynı olduğundan bunlarda gördüğünüz de kendi editörünüz ne ise aynını bu yönergeleri izleyerek yapabilirsiniz.

İlk olarak en yaygın olarak kullanılan notepad++'da çözümüne bakalım;

notepad++

Programın Üst barın da kodlama > Karakter Takımı > Türkçe > ISO 8859-9
veya windows 1254 bunlardan birini seçerek sayfanın karakter kodlama dilini değiştirebilirsiniz. veya direk kodlama > Bom olmadan utf-8'e dönüştür diyebilirsiniz.

XX8Y76.png

bGZ4AV.png


sublime text 3

İkinci örnek editörümüz sublime text 3 hiç bir farklı olmadığını anlayacaksınız görselleri görünce zaten
file > Reopen with Encoding >Turkish(ISO 8859-9) veya dediğim gibi windows 1254 resim olarak da gösteriyorum.

dGlqzL.png

Bu şekilde bütün türkçe karakter sorunlarını ele aldım bunlar dışında hiç bir şekilde türkçe karakter sorunu çıkmayacaktır.
Editör sorunu kodlama sorunu veri tabanı sorunu hepsini ele alıp çözümleri anlattım bu konudan yaralanarak sorununuzu çözebilirsiniz.

Yanlışlıkla karakter kodlamasını bozdunuz diyelim dosyanın dosya içeriğini tamamen seçip kesin ve karakter kodlamasını değiştirip kodu öyle yapıştırın diğer türlü o an içerikte bulunan dosyanın karakter kodlaması yanlışlıkla değiştirdiğiniz tip olacağı için türkçe yaparken bozulacaktır. Dediğim şekilde yaptığınız da bu hata ortadan kalkacaktır.
 
Son düzenleme:
5,683Konular
16,874Mesajlar
9,750Kullanıcılar
obbproSon üye
Üst