Ben vb 3000 girdileri Çevresi E, E, O, U gibi karakterler kullanarak, demektir, Fransızca insanların isimleri ve veri dolu bu veritabanını aldık.
Görünüşe göre, veriler içinde) (utf8_encode kullanarak bazen kodlanmış, ve bazen olmuştur. Bir berbat çıktı bu sonuç: bazı yerlerde karakterler onlar değil diğerleri de, güzel göstermek.
İlk başta ben bu sorunları ortaya arabiriminde her yerde izini ve utf8_decode () gerekli kullanmayı denedim, ama gerçekten uygulanabilir bir çözüm değil.
Ben bazı test yaptım ve ilk etapta utf8_encode kullanmak için hiçbir neden yoktur, bu yüzden oldukça tüm bu kaldırmak ve sadece her yerde UTF8 çalışmak istiyorum - tarayıcı, katman ve veritabanı düzeyde. Yani ben onun kadar temizlenir sürümüne göre tüm misencoded veri dönüştürme, veritabanını temizlemek gerekir.
Soru: utf8 dize doğru (utf8_encode ile) (utf8_encode olmadan) veya kodlanmış olup olmadığını kontrol ederim php bir işlev oluşturmak ve bu olsaydı, özgün durumuna geri dönüştürmek mümkün olacaktır?
Diğer bir ifadeyle: i () d utf8_encode olmamıştır utf8 içeriğe utf8_encode () olmuştur utf8 içeriği tespit nasıl bilmek istiyorum.
** GÜNCELLEME: ÖRNEK **
Burada iyi bir örnek: Eğer özel karakter dolu bir dize almak ve) (bunu da dize ve utf8_encode bir kopyasını alır. Ben hayal ediyorum işlevi, her iki dizeleri alır bakir birinci bırakır ve ikinci dize şimdi dize biri olarak aynıdır.
Ben bu çalıştı:
$loc_fr = setlocale(LC_ALL, 'fr_BE.UTF8','fr_BE@euro', 'fr_BE', 'fr', 'fra', 'fr_FR');
$str1= "éèöûêïà ";
$str2 = utf8_encode($str1);
function convert_charset($str) {
$charset= mb_detect_encoding($str);
if( $charset=="UTF-8" ) {
return utf8_decode($str);
}
else {
return $str;
}
}
function correctString($str) {
echo "\nbefore: $str";
$str= convert_charset($str);
echo "\nafter: $str";
}
correctString($str1);
echo('<hr/>'."\n");
correctString($str2);
Ve bu bana verir:
before: éèöûêïà after: �������
before: éèöûêïà after: éèöûêïà
Teşekkürler,
Alex