Webmaster Forumu

Geri git   Webmaster Forumu > Webmaster Kaynak Eğitim Tanıtım Hizmet > MySQL Veritabanı SQL
Kayıt ol Blogs Yardım Üye Listesi Ajanda iTrader Forumları Okundu Kabul Et

MySQL Veritabanı SQL SQL MySQL Access MSSQL Oracle Veritabani Database

Cevapla Add This!
 
LinkBack (13) Seçenekler Stil
  13 links from elsewhere to this Post. Click to view. #1 (permalink)   iTrader 
Alt 2006-04-14, 03:57
nokie - ait Kullanıcı Resmi (Avatar)
Senior Member
 
Üyelik tarihi: Mar 2005
Nerden: pompano beach
Mesajlar: 685
Blog Entries: 2
Tecrübe Puanı: 3
iTrader: %0/0
nokie will become famous soon enough
Exclamation MySQL 4.1.x & 5.x Türkçe Karakter Sorununun Çözümü

Merhaba ,

Bu makalede bir çok arkadaşımızın resmen işkence yaşadığı mysql 4.1.x sürümü ve türkçe karakterlerin sorunsuz, düzgün şekilde görüntülenebilmesi için nasıl ayarlanacağını anlatacağım.

İlk önce çalışmaya başlamadan önce: http://dev.mysql.com/downloads adresinden MySQL 4.1.x serisinin son sürümünü download ediyoruz.

Konumuz türkçe karakterler olduğu için mysql'nin kurulumunu anlatmıyorum.

Söze başlamak gerekirse, öncelikle MySQL 4.1.x sürümünde türkçe karakter problemi baştan beri yoktur, problemin asıl kaynağı bizim veri tabanlarımızı yanlış karakter setinde oluşturmamız ve server ayarlarınında birebir yanlış configürasyonundan kaynaklanmaktadır.

MySQL 4.1.x serisi ile birlikte yeni bir özellik olarak gelen, karakter setleri (charset) ve buna eşit karşılaştırma setleri (collation), özellikle daha önceki 4.0.x ve 3.0x serilerindeki sıralama ve arama sorgularındaki yaşanan problemi tamamen ortadan kaldırıyor.

MySQL 4.1.x serisinde türkçe karakterler için 2 ayrı karşılaştırma seçeneği bulunmaktadır.

Bunlar;
  • latin5_bin (büyük, küçük harf duyarlı)
  • latin5_turkish_ci (büyük, küçük harf duyarsız)

karşılaştırmalarıdır, bizim tercihimiz herzaman latin5_turkish_ci karşılaştırması olmalıdır. Bu karşılaştırma sayfalarda ISO-8859-9 setine denk gelmektedir.

MySQL'de latin5 karakter seti, varsayılan karşılaştırma olarak latin5_turkish_ci karşılaştırmasını kullanıyor, tabloları yada veri tabanlarını oluştururken bunu ekstradan girmenize gerek yok ancak girmenizin zarardan çok faydası olacaktır.

Tablolarınızı oluştururken herzaman aşağıdaki gibi oluşturun, mesela latin5 karakter seti ve karşılaştırma latin5_turkish_ci için en doğru tablo oluşturmasını yapalım:

Kod:
CREATE TABLE tablo1 (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50)
) CHARSET=latin5;
Bu tabloda karşılaştırma seçeneği girilmediği için varsayılan karşılaştırma; latin5_turkish_ci kullanır.

Şimdide latin5_bin karşılaştırması için doğru bir tablo oluşturalım;

Kod:
CREATE TABLE tablo1 (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50)
) CHARSET=latin5 COLLATE=latin5_bin;
Bu tabloda COLLATE girdiğimiz için karşılaştırma değeri olarak latin5_bin değerini kullanacaktır.

En önemli kısım veri tabanı oluşturmada bitiyor.. eğer yukarıdaki sabit ayarlarla bundan sonraki oluşturulacak bütün tabloları latin5 ve karşılaştırması: latin5_turkish_ci tanımlamasını otomatik olarak kullanmasını sağlamak için, veri tabanını aşağıdaki gibi oluşturuyoruz (latin5_turkish_ci için örnek);

Kod:
CREATE DATABASE veritabanıadı CHARSET=latin5;
bu komutla veri tabanımızı oluşturduğumuzda, karşılaştırma değeri otomatik olarak latin5_turkish_ci kullanılacaktır.

Eğer tablolarda latin5_bin karşılaştırmasını kullanmak istiyorsak, onu ayrıca veri tabanını oluştururken tanımlıyoruz;

Kod:
CREATE DATABASE veritabanıadı CHARSET=latin5 COLLATE=latin5_bin;
Ancak sistem ayarları latin1 olarak ayarlı olan bir makinede, bu ayarları yapsanız bile bu sefer türkçe karakterlerin yerine sayfanızda soru işaretleri çıkacaktır '?' gibi.

Bununda çözümü çok basit, mysql bağlantısı yaptığınız sorgu koduna aşağıdaki eklentiyi yapmanız yeterli;

mysql_query("SET NAMES 'latin5'");

Böylece bağlantı yapılacak istemcinin karakter seti latin5 olarak tanımlanır ve karakterler doğru görüntülenir.

Yurtdışından hosting hizmeti alanlar, mysql karakter seti ayarları latin1 yada utf8 olan sunucularda, hosting hesabındaki mysql türkçe karakter seti ayarlarının doğru yapılandırılması:

not: bu işlemler sadece yeni oluşturulacak veritabanları ve tablolar içindir.

Farklı nedenlerden dolayı hosting hizmeti için yurtdışındaki firmaları tercih edebiliriz, bu firmalardaki serverların mysql karakter seti yapılandırmaları genellikle latin1 yada utf8 dir. Bu iki karakter seti türkçe karakterler için yanlış bir yapılandırmadır. Bu sebeple doğru yapılandırma ve türkçe karakterlerin hem sorunsuz hemde gelecekte benzer problemler yaşamamak için yurtdışından hosting hizmeti alan arkadaşlar aşağıdaki adımları takip etsinler:

Varsayılan olarak latin1 veritabanı karakter seti, karşılaştırması latin1_turkish_ci olarak ayarlanmış serverlar için, türkçe karakterlerin sorunsuz çalışabilmesi için, öncelikle panel kullanıyorsak cpanel,plesk yada benzeri paneller olur, herzamanki gibi veritabanımızı oluşturuyoruz.

Eğer veritabanı latin1 olarak oluşturuluyorsa, aşağıdaki sorgu kodunu phpmyadmin üzerinde çalıştırıp, oluşturduğumuz veritabanını utf8'e vede karşılaştırmasını utf8_turkish_ci olarak ayarlıyoruz:
Alıntı:
ALTER DATABASE `veritabanı-adı` DEFAULT CHARACTER SET utf8 COLLATE utf8_turkish_ci
sorguyu girdikten sonra phpmyadmin data kısmına baktığınızda latin1 olarak oluşturulan veritabanının, utf8'e dönüştüğünü göreceksiniz. Tablolarınızı oluşturmaya başladığınızda ise karşılaştırmaların utf8_turkish_ci olarak ayarlandığını göreceksiniz, bu sebeple türkçe karakterler sorunsuz olarak bu veritabanında çalışacaktır. Tabiki sayfalarınızda charset UTF-8 olarak eklemeyi unutmayın.

Eğer varsayılan olarak mysql karakter seti utf8 vede karşılaştırması utf8_general_ci olarak ayarlanmış ise, istersek yukadaki sorgudaki gibi karşılaştırmayı utf8_turkish_ci olarak kullanabiliriz, türkçe karakterler sorunsuz çalışacaktır. İsteğe bağlı olarak aşağıdaki komutla veritabanını latin5 ve karşılaştırmasıda latin5_turkish_ci olarak ayarlayabiliriz:

Alıntı:
ALTER DATABASE `veritabanı-adı` DEFAULT CHARACTER SET latin5 COLLATE latin5_turkish_ci
sorguyu çalıştırdıktan sonra veritabanının latin5'e dönüştüğünü göreceksiniz. Tablolarınızı oluşturduğunuzda ise karşılaştırmaların latin5_turkish_ci olarak ayarlandığını göreceksiniz. Bu şekilde kullandığınızda sayfalarınızda iso-8859-9 kullanmayı unutmayın.

Bir konuyu açıklığa kavuşturmak gerekirse; mysql karakter seti ayarları latin1 olarak ayarlanmış bir sunucuda veritabanı ve tablolarda latin5 kullandığımızda türkçe karakterlerin yerine soru işaretleri çıkacaktır örnek: => ? <= gibi. Ancak varsayılan olarak utf8 olarak ayarlanmış bir serverda latin5 karakter setini kullanabiliriz, türkçe karakterler sorunsuz çalışacaktır. Varsayılan latin1 olarak ayarlanmış bir sunucuda ise utf8 ve karşlaştırması uft8_turkish_ci kullanabiliriz, problemsiz şekilde çalışacaktır. Bu şekilde server ayarlarınıza göre en doğru karakter seti yapılandırmasını yapabilirsiniz. latin1 sunucuda latin5 kullanmak istediğimizde soru işaretleri ile karşılaşacağımızı söylemiştim, ancak latin5'te ısrar ederseniz isterseniz aşağıdaki sorguyu mysql bağlantı kısmına eklemeniz gerekiyor:
Alıntı:
mysql_query("SET NAMES 'latin5'");
Yinede tavsiyem, bu işi sorgu koduyla halletmek yerine yukarıda anlattığım şekilde uyguladığınızda ekstradan kod v.b. eklemeden sağlıklı bir şekilde veritabanlarınızı oluşturabilir ve projelerinizi geliştirebilirsiniz.

not: bu işlemler sadece yeni oluşturulacak veritabanları ve tablolar içindir.


SERVER SAHİPLERİ:

Eğer kullanıdığız makine kendinize ait ve mysql 4.1.x türkçe ayarlarını düzgün yapmak istiyorsanız, aşağıdakileri uygulamalısınız:

Öncelikle mysql başlatma satırında şu şekilde değişiklik yapın: (etc/init.d/mysqld)

Kod:
/usr/bin/mysqld_safe  --defaults-file=/etc/my.cnf
--default-character-set=latin5 --pid-file="$mypidfile" >/dev/null 2>&1 &
Ardından my.cnf dosyanızı açın:

[mysqld] bölümüne init-connect="SET NAMES latin5" satırını ekleyin.

Ayrıca, [mysqld_safe] ve [client] bölümlerinede aşağıdaki eklemeleri yapın:

Kod:
default-character-set=latin5
default-collation=latin5_turkish_ci
değişiklikleri yapıp mysql sunucunuza reset atın ve değişikliklerin aktif olduğu göreceksiniz!

Not: show variables; sorgusunda çıkan system-character-set-UTF8 yazan yer kesinlikle değişmemektedir, bu mysqlnin 4.1.x serisiyle beraber değiştirilmez bir karakter seti olarak gelir.



Evet böylelikle MySQL 4.1.x serisindeki karakter sorunlarını kökten çözmüş bulunmaktayız, hepinize faydalı olması dileğiyle..

Emeğe saygı için yayınlayacağız yerlerde bu başlığın linkini vermeyi unutmayın, duyarlı arkadaşlara şimdiden teşekkürler.

Konu selim61 tarafından (2008-02-11 Saat 02:21 ) değiştirilmiştir.. Sebep: düzenleme:nokie
Alıntı ile Cevapla

  #2 (permalink)   iTrader 
Alt 2006-04-14, 09:53
zbahadir - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: Mar 2006
Nerden: Trabzon
Mesajlar: 1.084
Tecrübe Puanı: 3
iTrader: %0/0
zbahadir will become famous soon enough
Standart

Buradan anladığım kadarıyla bu makaleyi kaynak göstererek yayınlayabiliyoruz.

Alıntı:
nokie´isimli üyeden Alıntı
Merhaba ,
Emeğe saygı için yayınlayacağız yerlerde bu başlığın linkini vermeyi unutmayın, duyarlı arkadaşlara şimdiden teşekkürler.
Bu güzel bilgiler için çok teşekkürler.
__________________
Bursa Linux | ZT
Alıntı ile Cevapla

  #3 (permalink)   iTrader 
Alt 2006-04-15, 11:07
Member
 
Üyelik tarihi: Oct 2005
Mesajlar: 422
Tecrübe Puanı: 2
iTrader: %0/0
aoguney is an unknown quantity at this point
Unhappy

Alıntı:
nokie´isimli üyeden Alıntı
Kod:
mysqldump --default-character-set=latin5 -u veritabanı_kullanıcıadı -p veritabanıadı > /dizin/yedek.sql
Bu şekilde alınan yedeği yüklerken:

Kod:
mysql --default-character-set=latin5 -u veritabanı_kullanıcıadı -p veritabanıadı < /dizin/yedek.sql

Bu kodları nereye yazacağız?
__________________
WwW.NbaTr.CoM *-*-*-* WwW.KaliteKontrol.OrG
Alıntı ile Cevapla

  #4 (permalink)   iTrader 
Alt 2006-04-16, 22:30
nokie - ait Kullanıcı Resmi (Avatar)
Senior Member
 
Üyelik tarihi: Mar 2005
Nerden: pompano beach
Mesajlar: 685
Blog Entries: 2
Tecrübe Puanı: 3
iTrader: %0/0
nokie will become famous soon enough
Standart

@zbahadir, kaynak gosterek yayinlayabilirsiniz maksat bu iskenceyi ceken arkadşlar faydalansinlar.

@aoguney, gosterdigin kodlar SSH/komut satirindan veri tabani yedek alinirken kullanilan komuttur, SSH yetkin varsa serverda o komutlardan faydalanabilirsin. Yoksa makine sahibine bas vurup ssh yetkisi actirabilirsin kendin icin yada senin icin o sekilde yedek almasini soyleyebilirsin.
Alıntı ile Cevapla

  #5 (permalink)   iTrader 
Alt 2006-04-21, 20:00
Member
 
Üyelik tarihi: Oct 2005
Mesajlar: 422
Tecrübe Puanı: 2
iTrader: %0/0
aoguney is an unknown quantity at this point
Standart

Teşekkürler bilgilendirdiğin için
__________________
WwW.NbaTr.CoM *-*-*-* WwW.KaliteKontrol.OrG
Alıntı ile Cevapla

  #6 (permalink)   iTrader 
Alt 2006-04-21, 20:48
CyberTurk - ait Kullanıcı Resmi (Avatar)
Kişisel Rütbe
 
Üyelik tarihi: May 2005
Nerden: istanbul
Mesajlar: 1.567
Tecrübe Puanı: 4
iTrader: %100/1
CyberTurk will become famous soon enough
Standart

Çok güzel bir yazı olmuş, teşekkürler..
__________________
Google Araba Motoru
Alıntı ile Cevapla

  #7 (permalink)   iTrader 
Alt 2006-04-23, 04:25
nokie - ait Kullanıcı Resmi (Avatar)
Senior Member
 
Üyelik tarihi: Mar 2005
Nerden: pompano beach
Mesajlar: 685
Blog Entries: 2
Tecrübe Puanı: 3
iTrader: %0/0
nokie will become famous soon enough
Standart

Bende Teşekkür Ederim php5 kullananlar ayrica mysql4.1.x serisine dahil mysqli modulunden faydalanabilir.
Alıntı ile Cevapla

  #8 (permalink)   iTrader 
Alt 2006-04-29, 11:52
Member
 
Üyelik tarihi: Mar 2006
Mesajlar: 318
Tecrübe Puanı: 0
iTrader: %0/0
sinangunay is an unknown quantity at this point
Standart

Merhaba,
Bu harika paylaşım için teşekkür ederim.
Alıntı ile Cevapla

  #9 (permalink)   iTrader 
Alt 2006-05-27, 20:06
SLiM_BoY - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: Aug 2005
Nerden: I live in English :p
Mesajlar: 1.427
Tecrübe Puanı: 4
iTrader: %100/1
SLiM_BoY has a spectacular aura about
Standart

Veritabanı ve tabloların karakter seti latin5_turkish_ci olmasına rağmen Türkçe karakterler ? olarak çıkıyor.Nerede sorun var acaba ?
Alıntı ile Cevapla

  #10 (permalink)   iTrader 
Alt 2006-05-27, 20:36
nokie - ait Kullanıcı Resmi (Avatar)
Senior Member
 
Üyelik tarihi: Mar 2005
Nerden: pompano beach
Mesajlar: 685
Blog Entries: 2
Tecrübe Puanı: 3
iTrader: %0/0
nokie will become famous soon enough
Standart

Alıntı:
SLiM_BoY´isimli üyeden Alıntı
Veritabanı ve tabloların karakter seti latin5_turkish_ci olmasına rağmen Türkçe karakterler ? olarak çıkıyor.Nerede sorun var acaba ?
my.cnf dosyandaki [client] , [mysqld] bölümlerinde aşağıdakiler mevcutmu? :

Kod:
default-character-set=latin5
default-collation=latin5_turkish_ci
Ayrıca [mysqld] bölümünde aşağıdaki satırı ekledinmi? :

Kod:
init-connect='SET NAMES latin5'
Değişikliklerden sonra mysql sunucusuna reset attığında hala sorun devam ediyorsa:

show variables like '%latin5%'; komutunun çıktısını buraya gönderebilirmisin?

birde kullandığın mysql versiyonu ve bu sorunu ne yaptığında tekrarladığında yazabilirmisin? örnek: yedeği yükledikten sonramı, yoksa yeni oluşturulmuş bir veri tabanına veri girdiğindemi karakterler ? dönüşüyor.

Konu nokie tarafından (2006-05-27 Saat 20:39 ) değiştirilmiştir..
Alıntı ile Cevapla

Cevapla


LinkBacks (?)
LinkBack to this Thread: http://forum.iyinet.com/mysql-veritabani-sql/25541-mysql-4-1-x-ve-turkce-karakter-sorununun-cozumu.html
Konuyu Başlatan For Type Tarih
Vps Server Yardm.. ? - Webmaster Forum & Webmaster Okulu This thread Pingback 2008-01-24 16:00
MySQL 4.1.x ve Trke Karakter Sorununun zm -Webmaster Kaynak Sitesi This thread Refback 2007-12-14 21:10
MySQL 4.1 Trke Karakter Sorununa zm - Bursa Linux This thread Refback 2007-12-10 11:05
Smf 1.1 RC2 Türkçe (Farklı) Karakter Sorunu This thread Refback 2007-12-05 22:54
MySQL 4.1.x ve Türkçe Karakter Sorununun Çözümü - BilgiPortal Blog This thread Refback 2007-09-14 11:22
Yeni Hostta Türkçe Karakter Problemi - WM Forum - Webmaster Portalı This thread Refback 2007-09-09 00:28
Yeni Hostta Türkçe Karakter Problemi - WM Forum - Webmaster Portalı This thread Refback 2007-08-04 17:28
MySQL 4.1.x ve Türkçe Karakter Sorununun Çözümü - Bursa Linux Post #1 Refback 2007-03-05 06:19
Bursa Linux > MySQL 4.1.x ve Türkçe Karakter Sorununun Çözümü Post #1 Refback 2007-02-20 20:56
MySQL 4.1.x ve Türkçe Karakter Sorununun Çözümü - Bursa Linux Post #1 Refback 2007-01-10 03:15
MySQL 4.1.x ve Türkçe Karakter Sorununun Çözümü - Bursa Linux Post #1 Refback 2006-11-18 18:53
MySQL 4.1.x ve Türkçe Karakter Sorununun Çözümü - Bursa Linux Post #1 Refback 2006-10-05 22:20
MySQL 4.1.x ve Türkçe Karakter Sorununun Çözümü - Bursa Linux Post #1 Refback 2006-09-27 23:05

Konuyu Toplam 2 Üye okuyor. (0 Kayıtlı üye ve 2 Misafir)
 
Seçenekler
Stil


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
phpbb türkçe karakter firar Vbulletin VbSEO 8 2006-05-25 13:32
türkçe karakter domain shopyland Domain Satış / Düşecekler / Boştakiler 4 2006-03-02 12:45
Mysql da Türkçe Karakter Sorunu Alobar MySQL Veritabanı SQL 11 2006-02-25 01:14
MySql Access Databaselerde Türkce Karakter Problemi Uurz Web Hosting Kurulum Donanım Yazılım 22 2005-12-28 19:46
KDE de türkçe karakter Anonymous Fontlar Klavye 5 2002-08-10 03:48


Bütün Zaman Ayarları WEZ +2 olarak düzenlenmiştir. Şu Anki Saat: 01:51 .


Powered by vBulletin® Version 3.6.10
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.1.0

Firefox