SORU
28 AĞUSTOS 2009, Cuma


Kırık UTF8 kodlama tamiri için yardıma ihtiyacım var

Bazı kötü UTF8 kodlama çözme aşamasındayım. Şu anda PHP 5 ve MySQL kullanıyorum

Yazdırma gibi kötü kodlamaları birkaç örneği var benim veritabanında: #®

  • Veritabanı harmanlama utf8_general_ci
  • PHP UTF8 uygun bir başlık kullanıyor
  • Not Defteri BOM olmadan UTF8 kullanmak için ayarlanır
  • veritabanı yönetimi phpMyAdmin içinde ele alınır
  • aksanlı karakter değil her durumda kırık

İhtiyacım olan şey beni # örneklerini®, # harita yardımcı olacak fonksiyon çeşit, ü ve diğerleri düzgün aksanlı UTF8 onların karakterleri gibi.

CEVAP
28 AĞUSTOS 2009, Cuma


''UTF8 bir dizi geçmişte kırık durumlar ve ne yazık ki hiç kolay değil, ve genellikle oldukça imkansız. düzeltmek için denemek zorunda kaldım

Kırık olduğunu tam olarak belirleyebilir ve her zaman aynı şekilde kırık değilse, o zaman zor olacak 'Geri Al' hasar.

Eğer denemek istiyorsan geri alma hasar, senin en iyi bahis olurdu için yazmaya başlayın bazı örnek kod, nerede çalışırsanız çok sayıda varyasyonları üzerinde aramalar için mb_convert_encoding() görmek eğer sen-ebilmek bulmak bir arada '' ve '' düzeltmeleri veri. Sonunda, genellikle en iyi bile ağrı seviyesi nedeniyle eski veri sabitleme endişesi rahatsız değil, ama bazı şeyler ileriye dönük olarak düzeltmek yerine.

Ancak bunu yapmadan önce, size ilk etapta bu soruna neden olan şeyi düzeltmeye çalışın. DB tablo harmanlama ve editörler düzgün ayarlanmış zaten bahsettiniz. Ama her şey düzgün UTF-8 olduğundan emin olmak için kontrol etmeniz gereken başka yerler de var:

  • Yapmak UTF-8:HTML ve sunan emin
    • ("İçerik Türü: metin/html; charset=utf-8"); . Başlığı
  • Değişim utf-8 PHP varsayılan karakter kümesi:
    • ("", 'utf-8'); . aşağıdaki değerleri tanımlanmıştır ini_set
  • Eğer veritabanı değil her ZAMAN konuşmak utf-8, o zaman gerekebilir söyle her bağlantı için ayrı ayrı olmak içinde utf-8 modunda MySQL bunu veren:
    • karakter seti utf8
  • Web sunucunuza her zaman konuşmak anlatmak için bu komut Apache UTF8, gerekebilir:
    • AddDefaultCharset UTF-8
  • Son olarak, her ZAMAN düzgün UTF-8, PHP fonksiyonları şikayet kullandığınızdan emin olun. Bunun anlamı, her zaman kullanma mb_* tarz 'kısaltması farkında' string fonksiyonları. Uygun 'utf-8' sonunda onları parametre hatalı. kodlamak değil emin olmak için karakter içeren ayrıca htmlspecialchars gibi fonksiyonlar çağrılırken anlamına gelir(),

Eğer tüm süreç boyunca herhangi bir adım seni özledim, kodlama karıştırılmış olabilir ve sorunlar ortaya çıkıyor. Seni bir kere 'groove' olsa utf-8 yaparken, bu ikinci doğa. olur Ve tabii ki, PHP6 bu çok daha kolay (umarım) yapacak tamamen getgo gelen şikayet unicode olması gerekiyor

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jimmie Jones

    Jimmie Jones

    16 Kasım 2007
  • Joseph Herscher

    Joseph Hersc

    14 Mart 2007
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008