jeśli masz zestaw znaków inny niż UTF-8 i musisz umieścić go w formacie JSON, aby przenieść go do bazy danych, istnieją dwie metody, które mogą być używane w PHP, wywołując utf8_encode() i iconv() . Chciałbym wiedzieć, który z nich ma lepszą wydajność i kiedy jest wygodny w użyciu jeden lub drugi.iconv() Vs. utf8_encode()
Odpowiedz
gdy masz inny zestaw znaków UTF-8
Nope - utf8_encode()
nadaje tylko do konwersji ISO-8859-1 do UTF-8. Iconv zapewnia ogromną liczbę kodowań źródłowych i docelowych.
Re wydajność, nie mam pojęcia jak działa wewnętrznie i jakie biblioteki używa, ale moje przewidywania nie będą miały dużej różnicy - przynajmniej nie na "normalnych" ilościach danych w bajtach lub kilobajtach . W razie wątpliwości wykonaj test porównawczy.
I mają tendencję do używania iconv()
bo to jasne, że nie jest to konwersja z zestawu znaków A do zestawu znaków B.
Również iconv()
zapewnia bardziej szczegółową kontrolę nad tym, co zrobić, gdy napotka nieprawidłowe dane. Dodanie //IGNORE
do zestawu znaków docelowych spowoduje, że po cichu upuści nieprawidłowe znaki. Może to być pomocne w pewnych sytuacjach.
Polecam Ci napisać własną funkcję. Będzie to 2-3 linie i będzie lepiej niż w przypadku problemów z ustawieniami narodowymi, ikonami itp.
Na przykład: Fix Turkish Charset Issue Html/PHP (iconv?)
A co jeśli autor chce podejście, w którym nie zna wszystkich możliwych znaków wejściowych? –
- 1. Funkcja utf8_encode undefined
- 2. Błąd iconv PHP
- 3. Niezainicjowana stała Iconv
- 4. iconv lub mbstring?
- 5. Ruby 2.0 iconv wymiana
- 6. Usunąć akcenty bez używania iconv
- 7. iconv formacie Unicode nieznane wejście
- 8. Transliteracja z Iconv w Ruby
- 9. iconv: Konwertuj z CP1252 na UTF-8
- 10. ModuleParseError: Moduł parse failed: iconv-lite
- 11. Konwersja UTF8 do UTF16 przy użyciu iconv
- 12. Transliterate z iconv() w systemie Windows
- 13. Jak wyświetlić prawidłowe kodowanie Iconv w Ruby?
- 14. Jak statycznie połączyć iconv w oknach przy użyciu msys?
- 15. Nie można zbudować klejnotu iconv na rubinie 1.9.2
- 16. w `wymagają ': Nie ma takiego pliku do załadowania - iconv (LoadError)
- 17. iconv(): Wykryto niekompletny znak wielobajtowy w łańcuchu wejściowym
- 18. Jak uzyskać listę obsługiwanych kodowań według biblioteki iconv w php?
- 19. PHP: Radzenie sobie ze znakami specjalnymi z iconv
- 20. Błąd podczas instalacji w systemie Windows przez iconv ruby2.0.0
- 21. metoda vs funkcja vs procedura vs klasa?
- 22. body.scrollTop vs documentElement.scrollTop vs window.pagYOffset vs window.scrollY
- 23. Opa vs Dart vs Haxe vs coffeescript
- 24. VS 2008 vs VS 2008 Express
- 25. Strona vs Extent vs. Segment vs. Tabele
- 26. Crystalspace vs. Irrlicht vs. .....?
- 27. NetSqlAzMan vs AzMan vs (?????)
- 28. SpiderMonkey vs JavaScriptCore vs?
- 29. Klasa vs pakiet vs moduł vs komponent vs kontener kontra serwis vs platforma w świecie Java
- 30. Zmierz czas w Linuksie - czas vs zegar vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
również można użyć // trasnlit do wygenerowania tego typu konwersji u \ 00F, że java dekodowania automatycznie do ISO-8859-1. ale nie jestem pewien, czy to samo będzie miało miejsce, jeśli istnieją różne zestawy znaków zakodowane do utf-8. –
Zauważ, że PHP> = 5.4.0 zawiedzie teraz na nieprawidłowych znakach, nawet z flagą '// IGNORE': https://bugs.php.net/bug.php?id=61484 – dotancohen