PHP: Kiril karakterleri düzgün görüntülenmiyor

4 Cevap php

Geçenlerde başka bir sağlayıcıdan hosting geçti ve ben Kiril karakter görüntüleme sorunları var. Veritabanından okunan karakterler doğru görüntülenir, ancak php dosyasında kodlanmış olan karakterleri (bunlar soru işaretleri olarak görüntülenir) değildir.

Php kaynak kodunu içeren dosyalar utf-8 biçiminde kaydedilir. Kimseye yardım?

4 Cevap

Bu php dosyaların kodlama ile ilgisi vardı. Dosyaları Windows Not Defteri'ni kullanarak oluşturulan ve utf-8 kodlaması ile kaydedilmiş.

Ben dosyaları açmak için Notepad2 kullanıldığında, dosya kodlama "utf-8 imza ile" idi. Ben "utf-8" kodlaması değişti, metin doğru görüntülenir.

Baş bölümünde kodlamayı gösteren bir meta etiketi yerleştirmeyi deneyin:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Sorunun nedeni bir programcı editörü tarafından komut dosyalarını yeniden kodlama sık sık kaza olduğunu. Bu php dosyalarında kodlama güvenmek dizeleri kodlamalısınız iyi bir uygulama değildir.

Kodlanmış metin için kullanılır ne kodlama bulmak için tarayıcınızın kodlamasını geçmeyi deneyin, bu sorunu gidermek yardımcı olabilir. Ayrıca her sayfa için uygun http başlıkları göndermek için emin olun:

header('Content-Type: text/html; charset=utf-8');

Optionaly Eğer size HTML meta etiketi ekleyebilirsiniz:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Ben bir widget üzerinde birkaç denetimlere Almanca / Fransızca uluslararasılaşma biraz eklemek için çalışıyorum olarak ben bu aynı sorun ile mücadele edilmiştir.

UTF-8 olarak benim db baskı ince saklanır aksan ile Karakterler. Ancak, PHP diziler içine kodlanmış olan karakterler içinde bir soru işareti ya da küçük kare kutu ile siyah elmas olarak da ekranı dosyaları.

Benim php dosyasından her şekilde gelen kodlanmış dizeleri çözme / kodlamayı denedim, ama karakterler düzgün görüntülemek için alamadım.

Ben karakter böyle bir sonlu dizi var ve HTML ile sıkı çalışıyorum beri, ben sadece html varlıklar için karakter yerine benim intl sınıfa işlevsellik biraz ekledi.

Ben, bu özelliklere sahiptir.

static $accentEntities = array('á' => '&aacute;', 
                               'É' => '&Eacute;',
                               'é' => '&eacute;', 
                               'í' => '&iacute;', 
                               'û' => '&ucirc;', 
                               'ü' => '&uuml;');
static $accents = array();
static $entities = array();

Benim kurucu içinde ben kurulum bazıları benim yedek diziler ...

foreach (self::$accentEntities as $char => $entity) {
  self::$accents[] = $char;
  self::$entities[] = $entity;
}

Benim sınıf benim kodlanmış dizelerinden birini gerektiğinde Ve sonra ben sadece bu yüzden gibi geri ...

return str_replace(self::$accents,self::$entities,$str);

Bu tamamen getto çözüm ... ama şimdi, çalışıyor. Ben kesinlikle bir PHP dosyası içine kodlanmış olan aksan / özel karakterleri görüntülemek için doğru şekilde duymak istiyorum.