Ne Yazıkki Yine Türkçe Karakter Sorunu

Eklenti Türkçe tercüme bölümü.

Cvp: Ne Yazıkki Yine Türkçe Karakter Sorunu

İleti böcük 02.03.2007, 09:04

phpMyAdmin kullanarak aldığınız yedek dosyasında tablo yaratılmasında kullanılan sqllerdeki
TYPE=MyISAM ifadesini ENGINE=MyISAM DEFAULT CHARSET=latin5 (veya utf8) ifadesi ile değiştirip tabloları tekrar yaratırsanız veritabanında herhangi bir sorun kalmıyor. örneğin:

CREATE TABLE `phpbb_config` (
`config_name` varchar(255) NOT NULL default '',
`config_value` varchar(255) NOT NULL default '',
PRIMARY KEY (`config_name`)
) TYPE=MyISAM;

ifadesi yerine

CREATE TABLE `phpbb_config` (
`config_name` varchar(255) NOT NULL default '',
`config_value` varchar(255) NOT NULL default '',
PRIMARY KEY (`config_name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5;

Veritabanında doğru hale getirildikten sonra da includes/db.php dosyasında

// Make the database connection.
$db = new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);

satırlarının altına

mysql_query("SET NAMES 'latin5'"); //hangi dil kodlaması ise onu yazıyorsunuz "utf8" vb

satırını eklemeniz yeterli oluyor.


arkadaşım sana çok teşekkür ediyorum....bu sorun için bir çok yol denememe rağmen bu verdiğin çözüm yolu tek seferde işe yaradı ve sorun kalmadı...çok teşekkür ederim..

arkadaşlar eğer İşğ karakterleriniz ? soru işareti şeklince çıkıyorsa yukardaki çözüm yolunu uygulayın %10000000000 işe yarıyo...:):):):) :lol: :lol: :lol: :lol:
böcük
Üye
Üye
 
İleti: 2
Kayıt: 15.09.2006, 09:03

Cvp: Ne Yazıkki Yine Türkçe Karakter Sorunu

İleti

butterflyT
05.04.2007, 23:04

Evet yukarda verilen işlemler işe yarar. Ama db.php içinde angelside'ın dediği gibi şu değişikliği yapsak daha yakışıklı olur.

Kod: Tümünü seç
[ AÇ ]

includes/db.php

[ BUL ]

// Make the database connection.
$db = @new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);

[ SONRASINA EKLE ]

mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");


Bu konuda bir kaç önerme yapayım.

1- phpBB'nin standart kurulum sırasında latin1_swedish_ci default karakter seti olarak geliyor. Bu aslında Türkçe karakterler için bir sorun çıkartmıyor. Bu şekilde kullanılabilir. Sadece veritabanında Türkçe karakterler düzgün çıkmıyor. Misal ı -> ý oluyor. Ama sitede ekrana Türkçe karakter olarak yazılıyor.

2- Ancak bu şekilde kullanmanın iki dezavantajı var.
a - Automatic Database Backup gibi bir MOD kullanıyorsanız ya da veritabanı yedeği almak için phpBB'nin admin panelini kullanıyorsunuz bu şekilde alınan veritabanlarını geri yüklemek sorun çıkartacktır.

Sebebi şu: Adı geçen MOD ile ya da admin panelinden alınan yedeklerde latin1_swedish_ci karakter setine rağmen Türkçe karakterler düzgün çıkıyor misal ı -> ı çıkıyor. Dolayısıyla veriyi tablolara insert (yazarken) ederken hata alacağız. Benim gördüğüm hata genelde #1062 - Duplicate entry hatası oluyordu.

b- Benim gibi neden bu karakterler veritabanında düzgün değil diye gıcık da olabilirsiniz :)

Yukardaki hatadan kurtulmak için hata aldığınız tablonun karakter kümesini değiştirmeniz gerekecek. Ancak tablo dolu iken latin1_bin'den latin5_bin'e geçemeyeceksiniz hata verecektir. Tabloyu boşalt karakter setini değiştir sonra yedek veritabanını geri yükle. Oldukça zahmetli değil mi?

Bir de şu var. Çok fazla tablonuz var. Hepsinin tek tek karaktersetini değiştirmeye üşendiniz. Yedek yüklerken sadece sorun çıkartanları değiştirdiniz. Veritabanında çoğu tablo latin1_swedish_ci iken bazı tabloları latin5_bin yapmak phpBB'de sorun çıkaraktır. Özellikle mesaj gönderirken wordlist (kelime listesi) oluştururken ilgili tabloya yazı yazamayabilir. Çükü bir latin1 bir latin5 kafası karışacak. Başka sorunlar da olabilir.

En güzeli şu:

1- Baştan veritabanını tamamıyla Türkçe yapın. phpBB2.0.x dosyasını netten indirdiniz. Kurmadan önce install/schemas/mysql_schema.sql içinde düzenlemeler yapınız.

Kod: Tümünü seç
----AÇ-----
install/schemas/mysql_schema.sql

--- BUL ----
);

-- İLE DEĞİŞTİR ---
) ENGINE=MyISAM DEFAULT CHARSET=latin5;
Standart phpBB'de yaklaşık 30 tablo var bu değişikliği 30 kez yapmanız lazım. Bir editörle kolaylıkla yapabilirsiniz.

Bundan sonra install.php çalıştırarak phpBB'yi kurabilirsiniz. Kurduktan sonra sistemin düzgün çalışması için yukarda angelside'ın dediği değişikliği yapınız. Yoksa Türkçe karakterler yerine ? işareti çıkar. phpBB'ye SQL sorgularını Türkçe karakter setine uygun şekilde yapması gerektiğini hatırlatmamız gerekiyor. Sadece veritabanının Türkçe olması yeterli değil.

2- Eğer kurulu bir siteniz varsa ne yapabilirsiniz? Veritabanınızın muhtemelen default karakter seti latin1_swedish_ci'dir. Yukardaki arkadaşın dediği gibi veritabanınızı "yapı" ve "veri" olmak üzere ayrı ayrı yedekleyiniz.

Dikkat phpMyAdmin ile yedek alırsanız yedekte Türkçe karakterler bozuk çıkacaktır. Misal ı -> ý gibi. Oysa bize artık bunların düzgün hali lazım. Eskiden sorun değildi nasılsa ekrana Türkçe yazılıyordu ama artık sorun olacak. Çünkü veritabanını latin5_bin'e çevirdikten ve db.php'de gereken değişiklikleri yaptıktan sonra bizim veritabanımızda ı -> ý yazarsa ekrana da ý şeklinde çıkar.

Elle bunlar tek tek değiştirilmez. O yüzden ya admin panelinden sadece veri yedeğini alın ya da Automatic Database Backup gibi bir MOD ile yedek alın. latin1'e rağmen bu şekilde alınan yedeklerde Türkçe karakter olması gerektiği gibi çıkıyor.

Yapıyı phpMyAdmin ile alın.
Veriyi söylediğim MOD ile ya da admin panelinden alınız.

a- Aldığınız veritabanı yedeklerinden yapı olanı not defteri ile açınız. Değiştir seçeneği ile latin1 değerlerini latin5 ile değiştiriniz.
b- Mevcut veritabanını kaldırıp aynı isimde boş bir veritabanı oluşturun. Yapıyı sql sorgusu olarak çalıştırın. Tüm tablolarınız Türkçe karakter setine uygun olacaktır.
c- Türkçe karakterlerin düzgün olarak çıktığı veri yedeğinizi de sql sorgusu olarak çalıştırın. Veritabanımızın içeriği de düzgün bir şekilde Türkçe oldu.
d- angelside'n dediği değişikliği yapın.

Hepsi bu kadar.

ButterflyT
Kullanıcı avatarı
butterflyT
Kıdemli Üye
Kıdemli Üye
 
İleti: 144
Kayıt: 14.12.2005, 18:48

Önceki

Türkçe Desteği



Kimler çevrimiçi

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 0 misafir

cron