Sayfamda sık sık normal karakterlerin yerine ë, Ã, ì, ù, à gibi şeyler gösteriliyor.
Başlık sayfası ve MySQL kodlaması için utf8 kullanıyorum. Bu nasıl oluyor?
Bunlar utf-8 kodlu karakterlerdir. Bunları normal ISO-8859-1 karakterlerine dönüştürmek için utf8_decode() kullanın.
Eğer bu karakterleri görüyorsanız muhtemelen karakter kodlamasını düzgün belirtmemişsinizdir. Çünkü bu karakterler UTF-8 çok baytlı bir dizenin ISO 8859-1 veya Windows-1252 gibi tek baytlı bir kodlama ile yorumlanması sonucu ortaya çıkar.
Bu durumda ë
, UTF-8'de ë
(U+00EB) Unicode karakterini temsil eden 0xC3 0xAB ile kodlanabilir.
Her ne kadar utf8_decode
kullanışlı bir çözüm olsa da, kodlama hatalarını tablonun kendisinde düzeltmeyi tercih ediyorum. Bence kodda "hacks" yapmaktansa kötü karakterleri kendileri düzeltmek daha iyidir. Tablodaki alan üzerinde basitçe bir replace
yapın. OP'den kötü kodlanmış karakterleri düzeltmek için:
update <table> set <field> = replace(<field>, "ë", "ë")
update <table> set <field> = replace(<field>, "Ã", "à")
update <table> set <field> = replace(<field>, "ì", "ì")
update <table> set <field> = replace(<field>, "ù", "ù")
Burada <table>
mysql tablosunun adı ve <field>
tablodaki sütunun adıdır. İşte tipik olarak kötü kodlanmış windows-1252'den utf-8 karakterlerine çok iyi bir kontrol listesi -> Debugging Chart Mapping Windows-1252 Characters to UTF-8 Bytes to Latin-1 Characters.
Herhangi bir karakteri SQL ile değiştirmeye çalışmadan önce tablonuzu yedeklemeyi unutmayın!
[Bunun çok eski bir sorunun cevabı olduğunu biliyorum, ancak sorunla bir kez daha karşılaştım. Bazı eski windows makineleri utf8_general_ci harmanlanmış tablosuna eklemeden önce metni doğru kodlamadı.]