PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri
Transkript
PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri
PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri Eğer bir database tanımlaması (collation) düzgün yapılandırılmadıysa taşıdığınız ya da yeni oluşturduğunuz veritabanındaki (database) içeriklerde bulunan türkçe karakterler bozulabilir. Bunun nedeni veritabanını (database) oluştururken seçmemiş olduğunuz ve muhtemelen default kalan "collation" ayarıdır. Eğer default (kendiliğinden) değeriniz türkçe değilse tnaımlama bozuk olacaktır. Yeni bir veritabanı oluştururken ya da veritabanı (database) taşırken yeni ekranında sol tarafta bulunan "Options" sekmesinde açılan "Collation" öğesini "TURKISH_CI_AS" olarak seçmelisiniz dijitalders.net PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri 1 PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri Burada sağda üst kısımda görüldüğü üzere "Collation" <server default> olarak ayarlanmış. Bunu "TURKISH_CI_AS" olarak değiştirirseniz tanımlama anlamında herhangi bir karakter sorunu yaşamazsınız. dijitalders.net PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri 2 PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri Bir veritabanının (database) tanımlama dilini kontrol etmek isterseniz. Sql Server Management Tools a bağlandığınızda sol taraftaki veritabanı (database) listesinden istediğiniz database e sağ tıklayın. "Properties" i seçin. Burada açılan "General" sekmesinde görüldüğü üzere sağ tarafta altta Maintenance başlığında "Collation" kısmı bulunmaktadır. dijitalders.net PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri 3 PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri Türkçe karakterleri latin karakterlere çevirerek yazıyorsa, Veritabanından new query diyerek aşağıdaki komutları çalıştırmak yeterli olacaktır. USE master; GO ALTER DATABASE TestDb COLLATE Turkish_CI_AS ; GO Collation ayarlarını kontrol etmek için SELECT name, collation_name FROM sys.DATABASES WHERE name = N'TestDb'; GO MSSQL’de eğer databasimizin collation’u Turkish_CI_AS seçilmemişse insert yaparken türkçe karakter problemi yaşamamız mümkün. Eğer veritabanınız GoDaddy gibi yurtdışında bulunan bir hosting firmasında bulunuyorsa collation default olarak Latin1 seçilmiş olabiliyor. Bunu değiştirme yetkiniz yoksa, insert ve update yaparken stringlerimizi unicode olarak göndermemiz gerekli. Stringleri unicode olarak göndermek için başına büyük N harfi koymamız gerekli. Bu şekilde gönderilen tüm karakter setleri unicode olarak kaydedilecektir. Bu sayede türkçe karakterlerimiz korunmuş olacaktır. dijitalders.net PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri 4 PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri INSERT INTO dbo.Kitaplar (yazar) VALUES(N’DEITEL’); Unicode verilerin gönderilmesinde sıkıntı yaşanıyor. Arıca PHP sunucusundan MSSQL sql sunucusuna yapılan bağlantılardaki türkçe karakter sorunun çözümüde aşağıdaki gibidir. Fatal error: Uncaught exception ‘PDOException’ with message ‘SQLSTATE[HY000]: General error: 4004 General SQL Server error: Check messages from the SQL Server [4004] (severity 16) [(null)]’ in Linux terminale : sudo nano /etc/freetds/freetds.conf Bu dosyada şu satırı bulup [global] # TDS protocol version ; tds version = 4.2 hemen altına şu satırları ekliyoruz… tds version = 8.0 client charset = UTF-8 kaydedip Linux sistemi yeniden başlatıyoruz. Kaynaklar https://webdeyim.wordpress.com/2013/10/24/sql-server-turkce-karakter-problemi/ http://www.cihanblog.com/pdo-ile-mssql-baglanti-sorunu.html http://bilgisayamiyorum.com/question/167.aspx dijitalders.net PHP ve MSSQL Bağlantısı Türkçe Karakter Problemleri 5
Benzer belgeler
Basit Bir Photoshop ile Yapılmış Web Sayfası Nasıl
Detaylı
Nvidia Ekran Kartını Kurmak
linuxun bünyasındeki nvidia sürücüsü ile nvidia firmasının sürücüsünün çakıştığını bildiriyor.
aptitude install nvidia-xconfig