![]() |
![]() |
![]() | #1 | |
Çevrimdışı ![]() IF Ticaret Sayısı: (0) | charset & encoding problemleri karakter set veya türkçe problemi ile sanırım herkes karşılaştı forumda onlarca defa çözülmesine(?) rağmen bu konu hakkında hala yeni sorular geliyor ya çözümünü anlatamıyoruz, ya da yeterli değil karakterlerin hem düzgün görülmesi için hemde veritabanında doğru depolama yapmak için biraz detaylı anlatmaya çalışacağım 1) öncelikle yazdığınız dosyalarının, kullandığınız editörün encoding değerine göre iç karakter kodlama (internal encoding) değeri vardır çoğu editör bu değeri işletim sisteminden locale çevre değişkeninine bakarak seçer. windows sistemlerde genellikle windows-1254 veya iso-8859-9 'dur. bu dosyanın ( html , css , php , js .. ) içindeki text'in hangi encoding ile yazıldığını gösterir 2) http sunucusundan gönderilen çıktılar için default encoding değeri vardır, bu değer header olarak gönderilir. sayfayı görüntüleyen kişinin kullandığı tarayıcı ( ie , ff .. ) body kısmını parse ederken bu charset değerine göre işlem yapar. eğer bu header bilgisi bulunamassa bazı tarayıcılar body içerisinde encoding bilgisi taşıyan meta etiketini arar. bu değeri .htaccess ile : ÇIKTI: AddCharset utf-8 .js .php .css .html veya php'de header fonksiyonunu kullanarak PHP: header('Content-Type: text/plain; charset=utf-8'); değiştirebilirsiniz bu kısım çok önemlidir, zira haricindeki şeyleri doğru yapmanız bile karakterlerin hatalı gözükmesine neden olabilir ayrıca kullanıcı post / get gibi isteklerde sunucuya gönderdiği verileri bu encoding değerinde gönderir 3) mysql 4.1 ve üst versiyon sunucuda karakter set ile ilgili değişkenler; - server character set & collation eğer sunucu yönetimi ile işiniz yoksa bu kısmı atlayabilirsiniz mysql'i kurmadan önce configure parametresi olarak KABUK: bash#./configure --with-charset=utf8 --with-collation=utf8_unicode_ci veya mysql'i başlatırken KABUK: bash#mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci - database character set & collation SQL: create database db character set utf8 collate utf8_unicode_ci; eğer belirtmesseniz server değişkenleri kullanılacaktır - table character set & collation SQL: create table test( c1 int(5) unsigned ) character set utf8 collate utf8_unicode_ci;eğer belirtmesseniz database değişkenleri kullanılacaktır - column character set & sollation SQL: create table test( c1 text character set utf8 collate utf8_unicode_ci ); eğer belirtmesseniz table değişkenleri kullanılacaktır - connection character set & collation character_set_client , character_set_results , character_set_connection, collation_connection PHP: $mysqli->set_charset('utf8'); // veya $mysqli->query('set names "utf8" collate "utf8_unicode_ci"'); PHP: $m = new mysqli('localhost','user','pass','db'); //$m->set_charset('utf8'); $m->query("SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'"); $query = $m->query('show variables like "char%"'); if ($query) { while ($row = $query->fetch_row()) { echo $row[0].' => '.$row[1]."\n"; } } ?> ÇIKTI: character_set_client => utf8 character_set_connection => utf8 character_set_database => utf8 character_set_filesystem => binary character_set_results => utf8 character_set_server => latin1 character_set_system => utf8 -- collation_connection => utf8_unicode_ci collation_database => utf8_unicode_ci collation_server => latin1_swedish_ci
__________________ | |
| ![]() |
![]() |
Etiketler |
charset, encoding, problemleri |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |
![]() | ||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
Yaş Problemleri konu anlatımı, Yaş Problemleri | Violent | Matematik | 0 | 09 Mart 2014 22:29 |
Base64 TCL ( encoding - şifreleme ) | CeSaRCripS | TCL Scriptler | 9 | 26 Aralık 2012 02:07 |
Yepyeni bir encoding platformu! | Deep | İnternet Dünyasından Haberler | 0 | 03 Mayıs 2012 18:13 |
C Problemleri. | toXic | C ve C++ | 0 | 06 Şubat 2010 11:34 |