Kodlama algılamak ve her şeyi UTF-8 yapmak
Çeşitli RSS metinleri çok okumak ve benim veritabanı içine yerleştiriyorum.
Tabii ki, birkaç farklı karakter kodlamaları beslemeleri kullanılan, örneğin, UTF-8 ve ISO-8859-1 var.
Ne yazık ki, bazen metin kodlama ile ilgili sorunlar var. Örnek:
1) "" "" Benim veritabanında bu gibi görünmelidir:"". Ÿ Futbol ß Eğer bir "" doğru. görüntülenir Ÿ ise
2) Bazen, "" "" benim veritabanında bu gibi görünüyor:"". ß Futbol ß Yanlış, tabii ki gelir o zaman.
3) diğer durumlarda "" "" - herhangi bir değişiklik olmadan ß olarak kaydedilir. Ayrıca yanlış görüntülenir.
Ben bu durumda 2 ve 3 önlemek için ne yapabilirim?
Nasıl her şeyi aynı kodlama, tercihen olun UTF-8 olabilir miyim? Utf8_decode kullanmam lazım olduğunda kullanmak gerekir ben utf8_encode (), () (etkisi ne zaman fonksiyonları kullanmam lazım? belli olmaya başladı) ve ne zaman girdi ile bir şey yapmam gerekiyor mu?
Bana yardım EDEBİLİR MİSİN ve her şeyi aynı kodlamayı nasıl söyle bana? Belki de işlevi mb-tespit-kodlama ile()? Bunun için bir fonksiyon yazabilirim? Benim sorunum şu: Kodlama ne olduğunu bulmak için Nasıl 1) metin kullanır Nasıl 2) eski kodlama her ne ise-8 - UTF dönüştür
DÜZENLEME: Bu gibi bir işlevi de işe yarar mı?
function correct_encoding($text) {
$current_encoding = mb_detect_encoding($text, 'auto');
$text = iconv($current_encoding, 'UTF-8', $text);
return $text;
}
Denedim ama işe yaramıyor. Bunun nesi yanlış?
CEVAP
Eğer utf8_encode uygularsanız() zaten UTF8 dize bozuk UTF8 bir çıkış dönecektir.
Tüm bu sorunları ele alan bir fonksiyon yaptım. ::ToUTF8 diye Kodlama().
Dont dizeleri kodlama ne olduğunu bilmek gerekir. Latin1 (ıso 8859-1), Windows-1252 veya UTF8 veya dize onları karışımı olabilir. ::ToUTF8 kodlama UTF8. her şeyi dönüştürür
Bir servis bana, UTF8 ve Latin1 karıştırma aynı dize içinde çok karışık bir veri yem veriyordu, çünkü ben yaptım.
Kullanımı:
require_once('Encoding.php');
use \ForceUTF8\Encoding; // It's namespaced now.
$utf8_string = Encoding::toUTF8($utf8_or_latin1_or_mixed_string);
$latin1_string = Encoding::toLatin1($utf8_or_latin1_or_mixed_string);
Download:
https://github.com/neitanod/forceutf8
Güncelleme:
Bozuk görünen her UTF8 dize düzelten. başka bir işlevi, Kodlama ekledim::fixUFT8(),
Kullanımı:
require_once('Encoding.php');
use \ForceUTF8\Encoding; // It's namespaced now.
$utf8_string = Encoding::fixUTF8($garbled_utf8_string);
Örnekler:
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("FÃÂédÃÂération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
çıkış:
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Güncelleme: bir sınıf Kodlama denilen statik fonksiyonları bir ailenin işlevi (forceUTF8) dönüştürdüm. Yeni fonksiyon Kodlama::toUTF8().
MSDeploy (Visual Studio) silmek App_Da...
Git push'bir şey (güncelliğini he...
Nasıl node.js Base64 kodlama yapmak iç...
Derleyici/daha hızlı bir program yapma...
Python Performans - Hiç başka bir şeyi...