CakePHP muhtemelen ilgili kodlayan bir metin alanını kesiliyor edilir

1 Cevap php

İşte ben yapmaya çalışıyorum ne:

Gelen e-posta ayrıştırma ve sistemde mesajları oluşturmak için kullanıyorum. Bu neredeyse tamamen çalışır, ama çalışmak için bir kaç hata var. Şu anda uyuyor veriyor one email bazı karakterler içeriyorsa (örneğin, ® - "") geliyor veritabanına yerleştirirken, e-posta gövdesi özel karakter kesildi ediliyor. Bu $ Model-> (save) arama sırasında oluyor.

E-posta UTF-8 kodlu olmayan (ve herhangi bir kullanıcı e-posta gönderebilir beri, biz gelen posta kodlama kontrol edemez), ancak veritabanı UTF-8'dir. Bu e-posta UTF-8 olarak geldiğinde düzgün görünüyor.

Herhangi bir öneriniz? Kaydetmeye çalışmadan önce kodlama dönüştürmek için bir yolu var mı?

1 Cevap

Benim tahminim bir veritabanı bir UTF-8 kodlu mySQL tabloya ISO-8859-1 (veya bazı diğer kodlama) özel karakterler eklemek için çalışıyoruz noktada şoklar olmasıdır.

Bu başa tek doğru yolu, gelen e-posta'nın kodlamasını belirlemek ve bir iconv() üzerinde yapmak olacaktır.

UTF-8 kodlamasını belirlemek için ancak bu ayrıntılı gelen E-Mail ile ele hiç ettik, bu doğru yönde gider düşünüyorum: iconv_mime_decode

Ayrıca mb_detect_encoding kullanarak ama bu bildiğim kadarıyla güvenilmez kabul edilir kodlamayı sniff deneyebilirsiniz.