Garip Kodlama Sorunu

1 Cevap php

Ben Latin5 charset kodlanmış ve tablodaki tüm sütunlar da Latin5 olan verilerin bir tablo var. Ben "kümesi adlarını 'Latin5'" girin ve sorguladığınızda mysql konsolundan tablo sonuçlar Tamam. Ben silmek veya güncellemek / eklemek çalıştığınızda her yeni verinin kodlamaları mükemmel. Ben Iso-8859 veri eklemek çalıştığınızda ancak veritabanına (ayrıca mb_detect_encoding ile bu doğrulamak) ve ben bu doğru kodlamaları seçin ekleme / güncelleştirme / veya değil ben kullandım "SET" İSİMLERİ SET "olmadan veri eklemeye çalıştığınızda adları 'Latin5' "Tamam Latin5 veriler sadece set isimleri 'Latin5' ile düzgün kodlamaları geliyor vardır uygun şekilde ekleme / güncelleştirme ama seçmez. I set isimleri 'utf8' kullandığınızda select sorguları kodlanmış kötü ama ekleme / güncelleme Tamam.

Biz üretime gidecek istedi sebebi. Ve bu benim gelecekteki olası sorunlar hakkında düşünme yapar.

1 Cevap

mb_detect_encoding sizin dizesi ne kodlama bilmiyor. Bu nitelikli bir tahmin yapar, ama doğru tahmin dair hiçbir garanti yoktur. Özellikle de, tüm aday latin1 ve Latin5 durumunda olduğu gibi, tek-bayt kodlamalar, ise.

Gerçekten charsets sağ olsun istiyorsanız, ne yaptığınızı bilmek için hiçbir şey tutamaz. Ben size zaman en az bir çift bu sayfaları okumak öneririz:

Özellikle, bir web sayfası sayfası ile kodlanmış charset belirten bir http üstbilgisi ile servis olduğunu not edin. Eğer açıkça php-script bu set sürece, sunucudan sunucuya değişebilir, hangi web sunucuları varsayılan kullanacağız.

Ayrıca, oldukça deneme yanılma yaparak daha, gerçekte ne olup bittiğini anlamak için dikkatli olun. İkincisi kolayca ama her bağlamda, bazı bağlamda çalışan bir şey alabilirsiniz.

Ve son olarak. Eğer herhangi bir seçim varsa, ben ciddiye her şey için UTF-8 kullanmanızı öneririz. Latin5 keder çok almak için gidiyor.