quando hai un set di caratteri diverso da UTF-8 e devi metterlo in formato JSON per migrarlo in un DB, ci sono due metodi che possono essere usati in PHP, chiamando utf8_encode() e iconv() . Mi piacerebbe sapere quale ha prestazioni migliori e quando è conveniente usare l'una o l'altra.iconv() vs. utf8_encode()
risposta
quando si dispone di un set di caratteri diverso di UTF-8
Nope - utf8_encode()
è adatto solo per convertire una stringa di ISO-8859-1 a UTF-8. Iconv fornisce un vasto numero di codifiche sorgente e target.
Per prestazioni, non ho idea di come utf8_encode()
funzioni internamente e quali librerie utilizzi, ma la mia previsione è che non ci sarà molta differenza - almeno non su quantità "normali" di dati in byte o kilobyte . In caso di dubbio, fare un punto di riferimento.
tendo a usare iconv()
perché è chiaro che v'è una conversione da serie di caratteri A a carattere impostare B.
Inoltre, iconv()
fornisce un controllo più dettagliato su cosa fare quando si lavora con dati non validi. L'aggiunta di //IGNORE
al set di caratteri di destinazione causerà il silenziamento di caratteri non validi. Questo può essere utile in determinate situazioni.
Vi consiglio di scrivere la vostra funzione. Sarà lungo 2-3 linee e sarà meglio che alle prese con problemi locali, iconv, ecc.
Ad esempio: Fix Turkish Charset Issue Html/PHP (iconv?)
E se l'autore vuole un approccio in cui non conosce tutti i possibili caratteri di input? –
- 1. Funzione utf8_encode undefined
- 2. Costante non inizializzata Iconv
- 3. iconv o mbstring?
- 4. Rubino 2.0 iconv sostituzione
- 5. Errore iconv PHP
- 6. traslitterare con iconv() su Windows
- 7. iconv formato Unicode sconosciuto ingresso
- 8. PHP utf8_encode() converte gli spazi in spazi senza interruzioni
- 9. Rimuovere gli accenti senza usare iconv
- 10. Conversione da UTF8 a UTF16 tramite iconv
- 11. Errore durante l'installazione iconv su Windows ruby2.0.0
- 12. Come usare iconv per la conversione utf8?
- 13. Perché iconv di PHP ha bisogno di setlocale?
- 14. iconv UTF-8 // IGNORE produce ancora l'errore "carattere non valido"
- 15. Come elencare le codifiche Iconv valide in Ruby?
- 16. in `require ': Nessun file da caricare - iconv (LoadError)
- 17. iconv(): Rilevato un carattere multibyte incompleto nella stringa di input
- 18. Utilizzare iconv per convertire da UTF-16LE a UTF-8
- 19. Qual è la differenza tra iconv() e mb_convert_encoding() in PHP?
- 20. Internazionalizzare le best practice sui contenuti per l'utilizzo di utf8_encode() (funzione php)
- 21. iconv "carattere incompleto o sequenza di spostamento alla fine del buffer" errore
- 22. Utilizzando iconv per la conversione da UTF-16BE a UTF-8 senza BOM
- 23. Rails 4.2 - come risolvere il codice ASCII nell'esportazione CSV senza gem 'iconv'?
- 24. come ottenere l'elenco delle codifiche supportate dalla libreria iconv in php?
- 25. Perché iconv non può convertire da UTF-8 a ISO-8859-1
- 26. Converti Javascript UTF-8 in ASCII (come Iconv ('UTF-8', 'ASCII // TRANSLIT', $ stringa) in PHP)
- 27. php - iconv convertire da UTF-8 a Windows-1250 non funziona
- 28. ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?
- 29. VS 2008 vs VS 2008 Express
- 30. .NET vs ASP.NET vs CLR vs ASP
Inoltre è possibile utilizzare // trasnlit per generare questo tipo di conversione u \ 00F, che Java decodifica automaticamente a ISO-8859-1. ma non sono sicuro che lo stesso accadrà se ci sono diversi set di caratteri che sono stati codificati in utf-8. –
Nota che PHP> = 5.4.0 ora fallirà con caratteri non validi, anche con il flag '// IGNORE': https://bugs.php.net/bug.php?id=61484 – dotancohen