Türkçe karakter problemi, MySQL - SORUN ÇÖZÜLDÜ
Türkçe karakter problemi, MySQL - SORUN ÇÖZÜLDÜ
TÜRKÇE KARAKTER SORUNUM ÇÖZÜLDÜ. BİR KEZ DAHA TOPARLIYORUM:
Ayrıntılı bilgi için şu kaynağa bakabilirsiniz: Türkçe karakter sorunları, MySQL, vs.
ÖZET:
1. Dil paketimde bir sorun yoktu. "phpbb_**********.226.lang_turkish" dil paketini indirdim. Kurulumdan önce forumun klasöründeki tüm dosyaları açıp kontrol ettim.
Bazı dosyalarda iso-8859-9 ifadesi yerine iso-8859-1 ifadesinin kullanıldığını gördüm. Sonuç olarak iso-8859-9 ifadesinin yerleştirilebileceği ve benim de yerleştirdiğim/olduğu gibi bıraktığım dosyalar aşağıdaki gibidir:
admin / page_header_admin.php
cache / index.htm
db/ index.htm
images / index.htm
images / avatars / index.htm
images / avatars / gallery / index.htm
includes / functions.php – sayfanın başında değil, fakat kodun ilerleyen kısımlarında saklanıyor
includes / index.htm
includes / page_header.php
language / index.htm
language / lang_turkish / index.html
language / lang_turkish / lang_main.php
templates / subSilver / index.html
templates / index.htm
templates / subSilver / overall_header.tpl
templates / subSilver / simple_header.tpl
templates / subSilver / admin / index.htm
templates / subSilver / admin / index_frameset.tpl
templates / subSilver / admin / page_header.tpl
templates / subSilver / images / index.htm
templates / subSilver / images / lang_turkish/ index.html
language / lang_turkish / email / klasöründeki tüm dosyalar
Bu uzun çalışmanın ardından sorunum yine çözülmedi.
Fakat ne zaman ki lang_main.php dosyasındaki 8859-9 ifadesini 8859-1 olarak değiştirdim “݆harfleri normal göründü, bu sefer sayfanın diğer yerlerindeki karakterler (örneğin forumdaki “toplam misafir sayısı†gibi bir metindeki karakterler) bozuk göründü.
Fakat bu sefer, bazı forum dosyalarında (overall_header.tpl gibi) bulunan {S_CONTENT_ENCODING} ifadesini "iso-8859-9" ile değiştirdiğimde; yani Internet Explorer gibi programların dili otomatik olarak seçmesini değil de, özellikle “iso-8859-9" ayarını kullanmasını sağladığımda; veya Internet Explorer programının “görünüm / dil kodlaması†ayarından Türkçe’yi seçtiğimde problem çözüldü.
Fakat bu şekilde ileride veritabanın yedeğini alırken vb. işlemlerde sorunun çıkabileceğini öğrendim. Yani sorunuma henüz çözüm bulamamıştım.
Bu arada neden 8859-1 dil setinde “熓şâ€ gibi harfler görünürken “İâ€, “Іgibi harfler görünmüyor? Çünkü iso-8859-1 dil seti “ç†ve “şâ€ gibi harfleri okuyabiliyor. Bu harfler 8859-1’nin desteklediği diğer dillerde de var. Ama Türkçe’ye özgü diğer harfler (“݆gibi) 8859-1 tarafından desteklenmiyor. Problemin yaşanmaması için 8859-9’u kullanmak gerekiyor.
2. Foruma yazdığım başlıklar ve yeni açtığım konular veritabanında saklanıyor. Veritabanında veya veritabanı ile olan bağlantıda sorun varsa doğal olarak karakterler bozuk görünüyor.
Veritabanın idare edildiği kontrol panelinden veritabanın dil kodlamasını kontrol ettim. Türkçe karakterlerin sorunsuz gözükmesi için "iso 8859-9"a tekabül eden "latin5" karakter setinin kullanılması gerekiyor. Veritabanın nasıl kontrol edildiğini bilmiyorsanız hosting firması ile görüşmenizi tavsiye ederim. Benim veritabanım latin5 karakter setine ayarlıydı, ama problem devam ediyordu.
Hosting firmasıyla yaptığım sözlü görüşmede sunucumun Türkçe dilini ve phpBB'yi desteklediğini öğrendim. Bu kadar uğraşmama rağmen soruna çözüm bulamayınca hosting firmasıyla yazıştım. Bunun üzerine, sadece sunucu sahipleri (hosting firması) tarafından değiştirilebilen php.ini (bu dosyanın bilgisayardaki konumunu/adresini bilmiyorum, bilen varsa paylaşsın) ve httpd.conf (c:\Program Files\Apache Group\Apache2\conf\httpd.conf) dosyalarının içindeki ISO-8859-1 ifadesini ISO-8859-9 ile değiştirdiler.
Okuduğum kadarıyla "httpd.conf" dosyasındaki "AddDefaultCharset ISO-8859-1" satırının "AddDefaultCharset ISO-8859-9" satırı ile değişmesi gerekiyor.
Sorunum devam etti.
3. Son olarak, sorunun veritabanından kaynaklandığını düşündüğümden bir yerde bulduğum şu kodu denedim:
“includes/db.php
// Make the database connection.
$db = @new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
Sorunum çözüldü.
İlginiz için teşekkür ederim. Kolay gelsin.
Ayrıntılı bilgi için şu kaynağa bakabilirsiniz: Türkçe karakter sorunları, MySQL, vs.
ÖZET:
1. Dil paketimde bir sorun yoktu. "phpbb_**********.226.lang_turkish" dil paketini indirdim. Kurulumdan önce forumun klasöründeki tüm dosyaları açıp kontrol ettim.
Bazı dosyalarda iso-8859-9 ifadesi yerine iso-8859-1 ifadesinin kullanıldığını gördüm. Sonuç olarak iso-8859-9 ifadesinin yerleştirilebileceği ve benim de yerleştirdiğim/olduğu gibi bıraktığım dosyalar aşağıdaki gibidir:
admin / page_header_admin.php
cache / index.htm
db/ index.htm
images / index.htm
images / avatars / index.htm
images / avatars / gallery / index.htm
includes / functions.php – sayfanın başında değil, fakat kodun ilerleyen kısımlarında saklanıyor
includes / index.htm
includes / page_header.php
language / index.htm
language / lang_turkish / index.html
language / lang_turkish / lang_main.php
templates / subSilver / index.html
templates / index.htm
templates / subSilver / overall_header.tpl
templates / subSilver / simple_header.tpl
templates / subSilver / admin / index.htm
templates / subSilver / admin / index_frameset.tpl
templates / subSilver / admin / page_header.tpl
templates / subSilver / images / index.htm
templates / subSilver / images / lang_turkish/ index.html
language / lang_turkish / email / klasöründeki tüm dosyalar
Bu uzun çalışmanın ardından sorunum yine çözülmedi.
Fakat ne zaman ki lang_main.php dosyasındaki 8859-9 ifadesini 8859-1 olarak değiştirdim “݆harfleri normal göründü, bu sefer sayfanın diğer yerlerindeki karakterler (örneğin forumdaki “toplam misafir sayısı†gibi bir metindeki karakterler) bozuk göründü.
Fakat bu sefer, bazı forum dosyalarında (overall_header.tpl gibi) bulunan {S_CONTENT_ENCODING} ifadesini "iso-8859-9" ile değiştirdiğimde; yani Internet Explorer gibi programların dili otomatik olarak seçmesini değil de, özellikle “iso-8859-9" ayarını kullanmasını sağladığımda; veya Internet Explorer programının “görünüm / dil kodlaması†ayarından Türkçe’yi seçtiğimde problem çözüldü.
Fakat bu şekilde ileride veritabanın yedeğini alırken vb. işlemlerde sorunun çıkabileceğini öğrendim. Yani sorunuma henüz çözüm bulamamıştım.
Bu arada neden 8859-1 dil setinde “熓şâ€ gibi harfler görünürken “İâ€, “Іgibi harfler görünmüyor? Çünkü iso-8859-1 dil seti “ç†ve “şâ€ gibi harfleri okuyabiliyor. Bu harfler 8859-1’nin desteklediği diğer dillerde de var. Ama Türkçe’ye özgü diğer harfler (“݆gibi) 8859-1 tarafından desteklenmiyor. Problemin yaşanmaması için 8859-9’u kullanmak gerekiyor.
2. Foruma yazdığım başlıklar ve yeni açtığım konular veritabanında saklanıyor. Veritabanında veya veritabanı ile olan bağlantıda sorun varsa doğal olarak karakterler bozuk görünüyor.
Veritabanın idare edildiği kontrol panelinden veritabanın dil kodlamasını kontrol ettim. Türkçe karakterlerin sorunsuz gözükmesi için "iso 8859-9"a tekabül eden "latin5" karakter setinin kullanılması gerekiyor. Veritabanın nasıl kontrol edildiğini bilmiyorsanız hosting firması ile görüşmenizi tavsiye ederim. Benim veritabanım latin5 karakter setine ayarlıydı, ama problem devam ediyordu.
Hosting firmasıyla yaptığım sözlü görüşmede sunucumun Türkçe dilini ve phpBB'yi desteklediğini öğrendim. Bu kadar uğraşmama rağmen soruna çözüm bulamayınca hosting firmasıyla yazıştım. Bunun üzerine, sadece sunucu sahipleri (hosting firması) tarafından değiştirilebilen php.ini (bu dosyanın bilgisayardaki konumunu/adresini bilmiyorum, bilen varsa paylaşsın) ve httpd.conf (c:\Program Files\Apache Group\Apache2\conf\httpd.conf) dosyalarının içindeki ISO-8859-1 ifadesini ISO-8859-9 ile değiştirdiler.
Okuduğum kadarıyla "httpd.conf" dosyasındaki "AddDefaultCharset ISO-8859-1" satırının "AddDefaultCharset ISO-8859-9" satırı ile değişmesi gerekiyor.
Sorunum devam etti.
3. Son olarak, sorunun veritabanından kaynaklandığını düşündüğümden bir yerde bulduğum şu kodu denedim:
“includes/db.php
// Make the database connection.
$db = @new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
Sorunum çözüldü.
İlginiz için teşekkür ederim. Kolay gelsin.
En son Danila tarafından 10.03.2008, 22:10 tarihinde düzenlendi, toplamda 6 kere düzenlendi.
mySQL 4 ve öncesi sürümlerden mySQL 4 sonrası sürümlere veriler gönderildiği zaman bu problem oluşuyor.
Burada konuyla ilgili bir makale var: http://www.dmry.net/mysql-turkce-karakter-problemi
Burada konuyla ilgili bir makale var: http://www.dmry.net/mysql-turkce-karakter-problemi
phpBB Eklenti Kurulumu | Kurallar | phpBB3 İzinleri | Otel Rehberi
Kurallarımız gereği lütfen özel mesaj ile yardım istemeyiniz, cevap vermiyoruz.
Merhaba Esquare,
Makaleyi okudum, fakat sizin verdiğiniz açıklamayla tam bağlantı kuramadım. Makalede, böyle sorunların MySQL 4 sonrası sürümlerde görüldüğü yazıyor.
Siz ise bu problemin, mySQL 4 ve öncesi sürümlerden mySQL 4 sonrası sürümlere veriler gönderildiği zaman görüldüğünü belirttiniz.
Sanırım bir yerde yanlış anladım. Veriler bir veritabanından diğer bir veritabanına nasıl gönderilir ki? Veriler PHP kodları yardımıyla doğrudan bir tek veritabanına gönderilmez mı?
Danila
Makaleyi okudum, fakat sizin verdiğiniz açıklamayla tam bağlantı kuramadım. Makalede, böyle sorunların MySQL 4 sonrası sürümlerde görüldüğü yazıyor.
Siz ise bu problemin, mySQL 4 ve öncesi sürümlerden mySQL 4 sonrası sürümlere veriler gönderildiği zaman görüldüğünü belirttiniz.
Sanırım bir yerde yanlış anladım. Veriler bir veritabanından diğer bir veritabanına nasıl gönderilir ki? Veriler PHP kodları yardımıyla doğrudan bir tek veritabanına gönderilmez mı?
Danila
En son Danila tarafından 04.02.2007, 19:08 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Eğer veritabanınız daha önce eski bir MySQL sürümü kullanıyorsa ve daha sonra yeni sürüme güncellendiyse, ve siz bu güncellenen mySQL veritabanına verileri gönderdiyseniz, bu sorunu yaşamanız olasıdır demek istedim.
phpBB Eklenti Kurulumu | Kurallar | phpBB3 İzinleri | Otel Rehberi
Kurallarımız gereği lütfen özel mesaj ile yardım istemeyiniz, cevap vermiyoruz.
-
- Kayıtlı Kullanıcı
- Mesajlar: 2
- Kayıt: 08.03.2007, 02:29
- İletişim:
Ne kadar teşekkür etsem azdır herhalde...
ben de mysql 4.1 kullanıyorum ve ne yaptıysam bir türlü türkçe karakterlere çözüm bulamıyordum.
her türlü database ayarını denedim, dil kodlamalarıyla uğraştım. sırf bu yüzden forum değiştirdim
yukarıdaki kodu db.php ye ekleyince sorun çözüldü
çooooookk teşekkürler Danila.... bir de kolay yoldan mod yükleme işini halletsek tam süper olucak. daha önceden SMF kullanıyodum ben. türkçe karakter sorunu yüzünden değiştirdim. ama SMF nin mod yükleme işi çok kolaydı. herşey admin panelinden halloluyo, gerçi henüz pek uğraşmadım ama phpbb de anladığım kadarıyla herşeyi elle yapmak gerekiyo, öyle mi?
biliyorum biliyorum burası yeri değil mod yükleme olayıyla türkçe karakter sorununun ne alakası var. ama sadece bi soruyim dedim...
ben de mysql 4.1 kullanıyorum ve ne yaptıysam bir türlü türkçe karakterlere çözüm bulamıyordum.
her türlü database ayarını denedim, dil kodlamalarıyla uğraştım. sırf bu yüzden forum değiştirdim
yukarıdaki kodu db.php ye ekleyince sorun çözüldü
çooooookk teşekkürler Danila.... bir de kolay yoldan mod yükleme işini halletsek tam süper olucak. daha önceden SMF kullanıyodum ben. türkçe karakter sorunu yüzünden değiştirdim. ama SMF nin mod yükleme işi çok kolaydı. herşey admin panelinden halloluyo, gerçi henüz pek uğraşmadım ama phpbb de anladığım kadarıyla herşeyi elle yapmak gerekiyo, öyle mi?
biliyorum biliyorum burası yeri değil mod yükleme olayıyla türkçe karakter sorununun ne alakası var. ama sadece bi soruyim dedim...
Sitenizde ki tarafımızdan yapılan Türkçe çeviri imzalarımızı geri ekler misiniz?alptekin_n yazdı:Ne kadar teşekkür etsem azdır herhalde...
ben de mysql 4.1 kullanıyorum ve ne yaptıysam bir türlü türkçe karakterlere çözüm bulamıyordum.
her türlü database ayarını denedim, dil kodlamalarıyla uğraştım. sırf bu yüzden forum değiştirdim
yukarıdaki kodu db.php ye ekleyince sorun çözüldü
çooooookk teşekkürler Danila.... bir de kolay yoldan mod yükleme işini halletsek tam süper olucak. daha önceden SMF kullanıyodum ben. türkçe karakter sorunu yüzünden değiştirdim. ama SMF nin mod yükleme işi çok kolaydı. herşey admin panelinden halloluyo, gerçi henüz pek uğraşmadım ama phpbb de anladığım kadarıyla herşeyi elle yapmak gerekiyo, öyle mi?
biliyorum biliyorum burası yeri değil mod yükleme olayıyla türkçe karakter sorununun ne alakası var. ama sadece bi soruyim dedim...
phpBB Eklenti Kurulumu | Kurallar | phpBB3 İzinleri | Otel Rehberi
Kurallarımız gereği lütfen özel mesaj ile yardım istemeyiniz, cevap vermiyoruz.
-
- Kayıtlı Kullanıcı
- Mesajlar: 2
- Kayıt: 08.03.2007, 02:29
- İletişim:
-
- Kayıtlı Kullanıcı
- Mesajlar: 2
- Kayıt: 24.04.2007, 13:54
- İletişim:
merhaba bende bu phpbbde yeniyim elimdeki sql dosyasını import ettim.. include/db.php dosyasına // Make the database connection.
$db = new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
if(!$db->db_connect_id)
{
kodunu eklemeden once sağ tıklayıp dili turkçe yapıca sorun çıkmıyodu duzeliyodu tabi bunun çözüm olmadığını biliyorum o yuzden bu kodu ekledim ancak bu sefer dil paketindeki karakterler duzgun çıkıyor ancak forumda yazılan mesajlar da karakter problemi olusuyo bu sorunuma çözüm bulan olursa valla dua edicem onerilerinizi bekliyorum tesekkurler...
$db = new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
if(!$db->db_connect_id)
{
kodunu eklemeden once sağ tıklayıp dili turkçe yapıca sorun çıkmıyodu duzeliyodu tabi bunun çözüm olmadığını biliyorum o yuzden bu kodu ekledim ancak bu sefer dil paketindeki karakterler duzgun çıkıyor ancak forumda yazılan mesajlar da karakter problemi olusuyo bu sorunuma çözüm bulan olursa valla dua edicem onerilerinizi bekliyorum tesekkurler...
Yazıyı bir kez daha dikkatli bir şekilde okumanı rica ederim. Bu kadar çalışıp da sorunun ayrıntılı açıklamasını hazırlamaya çalıştım; açıklama okunmadan zaten cevaplanan soruların sorulması insanın moralini bozuyor tabi.ercutombalak yazdı:merhaba bende bu phpbbde yeniyim elimdeki sql dosyasını import ettim.. include/db.php dosyasına // Make the database connection.
$db = new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
if(!$db->db_connect_id)
{
kodunu eklemeden once sağ tıklayıp dili turkçe yapıca sorun çıkmıyodu duzeliyodu tabi bunun çözüm olmadığını biliyorum o yuzden bu kodu ekledim ancak bu sefer dil paketindeki karakterler duzgun çıkıyor ancak forumda yazılan mesajlar da karakter problemi olusuyo bu sorunuma çözüm bulan olursa valla dua edicem onerilerinizi bekliyorum tesekkurler...
1. Bir numaralı maddede belirttiğim dosyaların kodlamasını değiştirdin mi?
2. Veritabanın idare edildiği kontrol panelinden veritabanın dil kodlamasını kontrol ettin mi? (Etmediysen hosting firması ile görüş).
3. Bunların işe yaramaması halinde php.ini ve httpd.conf dosyalarındaki ISO-8859-1 ifadesini değiştirttin mi?
Foruma yazdığın yazılarda nokta, virgül, vs. gereksiz işaretleri kullanmanı da rica edeceğim
-
- Kayıtlı Kullanıcı
- Mesajlar: 2
- Kayıt: 24.04.2007, 13:54
- İletişim:
sevgili danila ,
1. maddedeki tum dosyaları kontrol ettim ancak sorun devam etti..
2.cpanel/phpmyadminden yedek alıp baktıgımda db eydeginde karakterseti olarak latin1 olarak gorunuyo bende şöyle bişey deneyeim dedi.. sql dosyası içindeki tüm latin1 ifadelerini latin5 yaptım ve import ettim ancak karakterler bu sefer tam anlamı ile karmakarış oldu...
3.hostinge soracağım bakalım cevap ne olacak..
Amamerak ettiğim bu sorunun kesin çözümü vardır di mi? :)
teşekkürler..
//////////
bu arada bişey eklicem db'yi utf8 ile import edince karaktersorunu ilk basta belirttiğim gibi sağ tıklayıp turkceyi secince düzelmis gorunuyo ama bu seferde dil dosyasının karakterleri bozuk oluyo...
1. maddedeki tum dosyaları kontrol ettim ancak sorun devam etti..
2.cpanel/phpmyadminden yedek alıp baktıgımda db eydeginde karakterseti olarak latin1 olarak gorunuyo bende şöyle bişey deneyeim dedi.. sql dosyası içindeki tüm latin1 ifadelerini latin5 yaptım ve import ettim ancak karakterler bu sefer tam anlamı ile karmakarış oldu...
3.hostinge soracağım bakalım cevap ne olacak..
Amamerak ettiğim bu sorunun kesin çözümü vardır di mi? :)
teşekkürler..
//////////
bu arada bişey eklicem db'yi utf8 ile import edince karaktersorunu ilk basta belirttiğim gibi sağ tıklayıp turkceyi secince düzelmis gorunuyo ama bu seferde dil dosyasının karakterleri bozuk oluyo...
Sevgili ercutombalakercutombalak yazdı:sevgili danila ,
1. maddedeki tum dosyaları kontrol ettim ancak sorun devam etti..
2.cpanel/phpmyadminden yedek alıp baktıgımda db eydeginde karakterseti olarak latin1 olarak gorunuyo bende şöyle bişey deneyeim dedi.. sql dosyası içindeki tüm latin1 ifadelerini latin5 yaptım ve import ettim ancak karakterler bu sefer tam anlamı ile karmakarış oldu...
3.hostinge soracağım bakalım cevap ne olacak..
Amamerak ettiğim bu sorunun kesin çözümü vardır di mi? :)
teşekkürler..
//////////
bu arada bişey eklicem db'yi utf8 ile import edince karaktersorunu ilk basta belirttiğim gibi sağ tıklayıp turkceyi secince düzelmis gorunuyo ama bu seferde dil dosyasının karakterleri bozuk oluyo...
"latin1" karakter seti "iso-8859-1" karakter setine tekabül ediyor. Türkçe'ye özgü bazı harfler "8859-1" tarafından desteklenirken ("ç" gibi) bazı harfler de (“İ” gibi) desteklenmiyor.
"iso-8859-1" olarak ayarlanan veritabanına/tablolara farklı dil setinde (latin5 setinde) yedeklenmiş dosyayı ithal etmeye çalıştığın zaman karakterlerin sorunlu gözükmesi bana doğal geliyor.
Mevcut veritabanında kullandığın kodlamanın ve ithal ettiğin yedek dosyada kullandığın kodlamanın aynı (latin5) olması gerekiyor.
Ne işe yaradıkları konusunda net bir fikre sahip olmamamla birlikte php.ini ve httpd.conf dosyalarındaki kodlamayı da unutma.
bende de benzeri sorun var ama forumda sorun yok data base yedeği alırken soruun yaşıyorum phpmyadminde yedek alırken karakterleerin hepsi sorunlu oluyor. Data base latin1_general_ci e dönmüş muhtemelen serverda sorun olmuştu domain şirketi taşırken değiştirdi. ama kabullenmiyorlar. utfs8 e dönüştürme imkanım varmı yardımlarınızı bekliyorum şimdiden teşekkürler
Kimler çevrimiçi
Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 0 misafir