Özel sorular ile genel Charsets, Zend DB ilgili - verilerin yanlış görüntülenmesini

2 Cevap php

Ben doğru karakterleri görüntüleyen benim Zend Framework App sorun yaşıyorum.

EG/ rue de l'Odéon

Görüntüler gibi:

rue de l'Odón

Uygulamalar görünümü ile görüntüleyerek bir webcoder yoluyla ve ayrıca bilgilerini görüntülerken.

Ben aşağıdaki şeyleri uğraş vermişler:

1) görünümünde karakter kodlama ayarlama.

$view->setEncoding('UTF-8');

2) temel veritabanında col / table kodlama UTF8 (mysql db) olduğunu Garanti

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8;

Benim Db bağlantı oluştururken 3) Zend_Db :: Fabrika yöntemine charset varaible geçti. Bu benim kayıt defteri aracılığıyla elde edilen nesne yapılandırma bölümüdür.

 [_config:protected] => Array
    (
        [host] => localhost
        [username] => root
        [password] => ---------------
        [dbname] => db_staging
        [charset] => utf8
        [options] => Array
            (
                [caseFolding] => 0
                [autoQuoteIdentifiers] => 1
            )

2 Cevap

Aşağıda bir kaç soru. Ben bu bazıları tamamen saçma gelebilir biliyorum, ama ben böyle takılıyorum zaman otomatik olarak kendimi tekme gün geçirecek kadar belirgin bir şey olduğunu varsayalım! Her :) Öncelikle, ben size yukarıda charset seçeneği verilmiş ZF 1.8 olduğunu varsayıyorum? (Hatta aşağıda liste bunu çözmek değilse) o ilk şey çözüp çözmediğini görmek için eski yönteme geri dönmek değilse.

  1. Tüm metin alanları gibi tablo harmanlama, şimdi utf8_general_ci olduğunu teyit edebilir? Ben bu varsayılan harmanlama (eksik olduğunda varsayılan bulunuyor ve charset utf8 olduğu) olarak kuruldu varsayalım çok Yukarıdaki komut, bir harmanlama söz etmez.
  2. Şimdi, bu komutu yeniden aynı zamanda utf8_unicode_ci için harmanlama ayarlamak (yavaş ama genel karşılaştırmada daha doğru - performans küçücük bir darbe vuracaktır ancak verilerin mevcut bir tablo ile yardımcı olabilir).
  3. Sadece emin olmak için verileri tekrar girin mı? Hatta sadece kesinlikle utf8 karakterleri kopyaladığınız kontrol çift bilinen bir UTF-8 editörü içine yazın; ve
  4. Eğer kaynak metin ISO-8859-1 veya Windows 1252 gibi UTF-8 ve bir şey değil% 100 emin misin?
  5. Görünüm kodlama mümkün olduğunca erken ayarlanır (ve yeni Görünüm ViewRenderer yardımcısı eklenir) emin olun.
  6. Ne mysql sürücü kullanılır? Mysqli veya PDO? Eğer seçenek için uygun ayarları kullandınız mı?
  7. Karakter kodlaması herhangi gör basan var mı? Kodlama sonra Content-Type üstbilgisi, herhangi bir XML bildirimi (örn. XHTML) alınan, ve nihayet Content-Type için bir meta http-equiv etiketi edilir. Bu da öncelik sırası - bir önceki beyan UTF-8 ile aynı fikirde değilse sayfası amaçlanan birini kullanamazsınız. Doğru başlık seti ile ön denetleyicisi üzerinde özel bir Response nesnesi ayarlayarak başlığını sıfırlamak - genellikle "Content-Type: text / html; charset = UTF-8".
  8. Yanlış tarayıcı tarafından tespit eğer kodlamayı saptamak için, elle de, örneğin, sayfanın tarayıcılar kodlamayı sıfırlayarak hata ayıklama > Firefox Kodlamalar görüntüleyebilirsiniz. Kontrol daha iyi ISO veya Windows kodlama ekran.
  9. Belki bir şey onu kodlayan çift - utf8decode yılında şablonuna metin çıktı () kaydırma deneyin? Garip şeyler oldu ...

Benim UTF-8 kriz kontrol listesi ;). Listelenen şey olur bana bildirin. Ben aklıma öğelerin en kapsar düşünüyorum.

Pádraic mükemmel listesine ek olarak, http://akrabat.com/2009/03/18/utf8-php-and-mysql/ bakabilirsiniz