2011-07-11 3 views
8

Veritabanını oluştururken harmanlamayı belirtmediğim için ♥•â—♥ Dhaka ♥•â—♥ (♥•●♥ Dhaka ♥•●♥ olmalıdır) gibi bir değer içeren bir veritabanım var.
Şimdi düzeltmek istiyorum. Verileri ilk etaptan aldığım yerden tekrar alamıyorum. Bu yüzden verileri bir php komut dosyasında getirip doğru karakterlere dönüştürmenin mümkün olabileceğini düşünüyordum.
Veritabanının ve alanların harmanlanmasını utf8_general_ci olarak değiştirdim.latin1_swedish_ci dosyasını utf8 ile PHP'ye dönüştürme

+0

nasıl ben ™ ¥ â € ¢-â ™ ¥ â orijinal metni alabilirim? –

cevap

14

Harmanlama karakter kümesiyle aynı DEĞİLDİR. Harmanlama sadece metinleri sıralamak ve karşılaştırmak için kullanılır (bu yüzden orada bir dil terimi vardır). Gerçek karakter seti farklı olabilir.

en yaygın arıza veritabanında ziyade PHP ve MySQL arasındaki bağlantıda değildir. Bağlantı için varsayılan karakter takımı genellikle ISO-8859-1'dir. Sen ilk şey SQL sorgusu SET NAMES 'utf-8'; veya mysql_set_charset fonksiyonunu kullanarak, CONNECTIONG sonra yapmak bunu değiştirmek gerekir.

Ayrıca tablolar karakter kümesini kontrol edin. Bu, UTF-8'i başlangıçta belirtmemişseniz (yine: harmanlama ile aynı değildir) yanlış olabilir. Ancak, herhangi bir şeyi değiştirmeden önce bir yedek aldığınızdan emin olun. MySQL, karakter dizisini bir öncekinden dönüştürmeye çalışacaktır, bu yüzden ISO-8859-1 tablolarında UTF-8 verilerini gerçekten kaydettiyseniz, verileri yedeklemeden tekrar yüklemeniz gerekebilir.

+0

Tamam. Bu karakterler 'utf ♥ ♥ utf8_general_ci 'karakterinde bu şekilde kaydedilecek mi? Ve bu karakterler 'â ™ â € ™' '' '' '' '' '' '' '' '' '' kaydedildiklerinde hangi karakter kümesinin kullanıldığını nasıl anlarım? –

+1

utf8_general_ci bir charset değil, bir harmanlamadır. Gerçek karakter kümesi utf-8 olarak adlandırılır ve tablonun bir başka özelliğidir. utf-8 varoluştaki çoğu karakteri kodlayabiliyor, bu yüzden evet (gerçekten, SO'nun kendisi UTF-8 kullanıyor, bu yüzden eğer sorunuza cevabınız “hayır” ise karakterleri bana gösteremezsiniz). İkinci soruya gelince, metni kaydettiğinizde tablonun hangi karakterin gösterildiği gibi olduğunu kontrol ederek başlayın. –

+0

Teşekkürler. Şimdi anlıyorum. :) mysql_set_charset öğesini utf8 olarak ayarlamak yeni girişlere yardımcı oluyor. Diğer detaylara bakıyorum. :) –

2

Ben mb_detect_encoding() ve mb_convert_encoding() içine bakmak ve onlar size yardım edip edemeyeceğini görecekti.

+0

™ ¥ â-â ¥ Dakka ™ ™ ¥ â € ¢ â € ¢ â-â ™ ¥ 've â' ● ♥ ', her iki durumda da onun bu • söyleyerek ♥ â ben' üzerinde mb_detect_encoding kullanıyorum zaman onun UTF- 8. Şimdi ne yapmalı? –

+1

Bozuk bir kodlama sorunu gibi görünüyor. Bunu okuyun: http://stackoverflow.com/questions/1344692/i-need-help-fixing-broken-utf8-encoding – AlienWebguy