PHP Türkçe Karakter Sorunu ?
-
selamlar.
yaklaşık 2 gündür bununla uğraşıyorum. daha önce bu sorunla bu kadar uğraştığımı hatırlamıyorum.
form ile gönderdiğim türkçe karakterler ( ı ğ ş ) formun gönderildiği sayfada bu hale geliyor ( ý ð þ )
veritabanı karakter seti olarak latin5 kullanıyorum.
veritabanı bağlantısını yaptığım sayfada
<?php
$db->query("SET NAMES 'latin5'");
$db->query("SET CHARACTER SET latin5");
$db->query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
?>
kodlarını kullanıyorum.
son olarak meta kullanmayı denedim ama oda yemedi : <META http-equiv=content-type content=text/html;charset=iso-8859-9>
basit gibi görünen bu aptal sorun iki gündür beni uğraştırıyo, bu noktadan sonra aklıma birşey gelmedi.
edit: arama yaptım ama istediğim sonuca ulaşamadım.
-
ý ð þ olarak db ye kayıt ediyor ama tekrardan sayfaya çekilince düzeliyor. yani bende hep öyle
-
yok hoca bende öyle değil. formu post ettiğimde karakterler bu şekilde çıkıyo : ý ð þ
veritabanına kayıt edildiğinde ise şu şekilde çıkıyo : ý ð þ
-
mysql_set_charset($db,"utf8");
hocam bi yukardakini dene olmazsa o latin5 lerin hepsini utf8 yapıp dene.
-
tabloların hepsini utf8 yaptım, kodlardaki latin5lerin hepsini utf8 yaptım ama aynı değişen birşey yok.
-
hocam dosyayı kayıt ederken utf-8 kayıt et meta tagların utf-8 olsun veritabanı charsetinde utf-8(utf8_general_ci olabilir) olsun. bu şekilde veri çekerken sorun yaşamazsın.
meta charsetin iso-8859-9 veritabının utf-9 kod çekmen latin-5 :) bunların hepsini utf-8 olarak düzenle gerekirse tablolardaki verileri bu düzenlemelerden sonra tekrar gir. çünkü hatalı karakter kodlamasıyla veri tabanına veri girilmişse işlemlerin doğru olsa bile o hatalı veriyi çekeceksin. yine problemliymiş gibi görünecek. hepsini utf-8 yaparsan hiç hata almayacaksın ajax v.s. kullanıyorsanda hata almayacaksın.
-
sayfa karakter setleri bu durumda : <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
veritabanı karakter seti utf8, utf8_general_ci yaptım.
sayfaları kaydederken utf8 yaptım.
sorun devam ediyo hoca.
-
hocam şimdi veri tabanında latin5 olarak belirtilmiş text fieldler var. birincisi bunları düzzenleyeceksin.
ikincil olarak Echo "Site bilgileri alýnamadý !"; bu şekilde belgeyi unicode olarak kayıt etmemeden kaynaklı karakter hataları var. bunlarıda düzelteceksin.
sen belgeleri utf-8 olarak kayıt ettim diyorsun ama kayıt etmemişsin. kayıt etsen ben her düzenlemeye çalıştığım belgedenn şu hatayı almam :) using the Western (ISO-8859-15) character encoding. yani karakter düzenin bu. sen php dosyasını bu şekilde kayıt ettiğin için latin5 yada utf8 olarak veri çekmen bir şey değiştirmez. latin5 olarak çektiğin veriği iso-8859-15 de gösterebilmen için dönüştürmen gerekir.
ne kadar anlatabildim bilmiyorum. biraz işim var erken gelirsem belgelerini düzeltip pm atıcam. hadi eyvallah
-
bağlantıları gerçekleştirdiğin dosyaya
mysql_query("SET NAMES utf8"); mysql_query("SET CHARACTER SET utf8"); mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");
ekle zira sanarım yapmışsın
verileri çektiğin dosyaya
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
ve en nihayet db collation ayarlaınıda
utf8_turkish_ci
yap. kesin olur.
-
@Turan-Mete
sorun dosya kayıt ederken farklı charset ayarı seçili olduğu için html çıktıdak karakterlerini yamulması, veritabanın utf8_general_ci olmasına rağmen fieldlerin latin5 olması.
@Abizittin
hocam pm ile dosyaları gönderiyorum bi kusur kalmadı güle güle kullan. behzetç nin tekrarı vardı dalmışım :D
-
edit