2012-02-29 12 views
8

UTF-8'den farklı bir karakter kümeniz varsa ve bunu bir DB'ye geçirmek için JSON biçimine koymanız gerektiğinde, PHP'de kullanılabilen iki yöntem vardır: utf8_encode() ve iconv() . Hangisinin daha iyi bir performansa sahip olduğunu ve bir ya da diğerini kullanmanın ne zaman uygun olduğunu bilmek isterim.iconv() Vs. utf8_encode()

cevap

14

Eğer bir karakter kümesi farklı olduğunda UTF-8

Hayır - utf8_encode() UTF-8'e bir ISO-8859-1 dize dönüştürmek için sadece uygundur. Iconv çok sayıda kaynak ve hedef kodlama sağlar.

Re performans, ben utf8_encode() içten nasıl çalıştığını hiçbir fikrim yok ve hangi bunu kütüphaneler kullanır ama benim tahmin kadar fark olmayacak olan - verilerin en azından üzerinde "normal" tutarlar bayt veya kilobayt . Şüpheniz varsa, bir kıyaslama yapın.

Ben iconv() geçersiz veri karşılaştığında ne yapacağını ile ilgili daha ayrıntılı denetim sağlar, bu da

B.

set karaktere karakter kümesi A'dan bir dönüşüm olduğunu daha net çünkü iconv() kullanma eğilimindedir. Hedef karakter kümesine //IGNORE eklenmesi, geçersiz karakterleri sessizce bırakmasına neden olur. Bu belirli durumlarda yardımcı olabilir.

+0

ayrıca u \ 00F, bu java kod çözme otomatik ISO-8859-1 dönüşüm bu tür oluşturmak için // trasnlit kullanabilirsiniz. ama utf-8'e şifrelenmiş farklı karakter kümeleri varsa aynı şey olup olmayacağından emin değilim. –

+0

Not: PHP = = 5.4.0 şimdi geçersiz karakterler üzerinde başarısız olur, hatta // IGNORE bayrağı: https://bugs.php.net/bug.php?id=61484 – dotancohen

0

Kendi işlevinizi yazmanızı öneriyorum. 2-3 satır uzun olacak ve yerel ayar, ikon vb. Konularla uğraşmaktan daha iyi olacaktır. Örneğin

: Fix Turkish Charset Issue Html/PHP (iconv?)

+0

Ve yazar isterse Bütün olası giriş karakterlerini bilmediği bir yaklaşım? –

İlgili konular