2012-08-28 16 views
5

Veritabanında aksanlı karakterler kullanan/depolayan bir web sitesinde çalışıyorum. Ben sayfa şablonu kümesine sahip böylece Config.php charset değişken ayarını, örneğin eşleştiğini:CodeIgniter yapılandırma karakter takımı ve UTF-8 desteği

<meta charset="<?php echo $this->config->item('charset');?>"> 

I having $config['charset']UTF-8, forma ayarlandığında, olduğu doğrulama başarısız olur ve aksanlı bir karakter eklenmişse hiçbir karakter gönderilmiyormuş gibi olur. Bu nedenle, örneğin, dizenin herhangi bir bölümünde yer alması durumunda gerekli bir alan geri dönecektir. Dize eksi çalışır.

Ben değiştirerek bu çalışma almak için başardınız $config['charset']ISO-8859-1 ve takmadan önce UTF-8 metin dönüştürme/php en utf8_encode() ve utf8_decode() ile veritabanından alındıktan sonra. Bu en iyi yol mu, yoksa CodeIgniter'da çalışan aksanlı karakterler ile UTF-8'i elde etmek için gereken bir şeyi mi özlüyorum?

Herhangi bir tavsiye takdir edildi.

+0

UTF-8'in her yerini ayarladığınızdan emin olun. Neyin yanlış gittiğini söylemek zor, ama muhtemelen bir noktada farklı bir karakter kümeniz var. Okumak zorunda: http://www.joelonsoftware.com/articles/Unicode.html. – Styxxy

cevap

12

Her yerde UTF-8 kullandığınızdan ve hem PHP hem de MySQL'in UTF-8 işlemek üzere yapılandırıldığından emin olmanız gerekir. html olarak

, meta etiketi ekleyin:

<meta charset="utf-8" /> 

Ve UTF-8 biçiminde kaydedin. işte how to do that in notepad++.

UTF-8 desteklemek için MySQL tablolar tanımlayın ile tablo oluşturmak:

DEFAULT CHARSET=utf8; 

Ve bağlantıyı ayarlayın: php.ini yılında

mysql_set_charset('utf8', $con); 

Enable UTF-8:

default_charset = "utf-8" 

Tam manuel kontrol için Handling Unicode Front To Back In A Web App

+0

Cevabınız ve bağlantınız için çok teşekkürler - UTF-8'in tüm alanlarda kullanıldığından emin olmak için kontrol edeceğim. Form doğrulama sorgusu $ config ['charset'] ayarının 'utf-8' (tümü küçük harf) yerine 'UTF-8' (tüm büyük harf) olarak ayarlanmış olmasından kaynaklanıyordu. Bazı nedenlerden dolayı bu 'büyük harf' UTF-8 'için varsayılan ayar çalışmaz (en azından kurulumumda değil). –

+0

cool, yardım etmekten mutluluk duyuyorum :) +1 – Kuf

+0

Google + 'da bulduğunuz kullanıcı için küçük yorum - bu sorunun alternatif kaynağı, _or sütun tablosunu kodlamak olabilir (evet, tablonun kodlamasını değiştirmek, tek tek sütunların kodlamasını değiştirmez) - bu durumda UTF-8 dizgisi olan bir sütunun içindeki düzenleme değeri, sadece 'codeed codeigniter' ile sorgulama yapıldığında görülemeyen "Yanlış string değeri" uyarısı ile sonuçlanacaktır. Göreceğiniz tek şey UTF-8 char yerine? . – MarcinWolny