когда у вас есть кодировка, отличная от UTF-8, и вам нужно поместить ее в формате JSON для переноса ее в БД, есть два метода, которые можно использовать в PHP, вызывая utf8_encode () и iconv (). Я хотел бы знать, какая из них имеет лучшую производительность, и когда удобно использовать ту или иную.
когда у вас есть кодировка, отличная от UTF-8
utf8_encode()
– utf8_encode()
подходит только для преобразования строки ISO-8859-1 в UTF-8. Iconv предоставляет огромное количество исходных и целевых кодировок.
Re, я не знаю, как utf8_encode()
работает внутри и в каких библиотеках он использует, но мой прогноз там не будет иметь большого значения – по крайней мере, не на «нормальных» количествах данных в байтах или килобайтах. Если вы сомневаетесь, сделайте бенчмарк.
Я предпочитаю использовать iconv()
потому что яснее, что есть преобразование из набора символов A в набор символов B.
Кроме того, iconv()
предоставляет более подробный контроль над тем, что делать, когда он сталкивается с недействительными данными. Добавление //IGNORE
к целевому набору символов приведет к бесшумному отключению символов. Это может быть полезно в определенных ситуациях.
Я рекомендую вам написать свою собственную функцию. Это будет 2-3 строки в длину, и это будет лучше, чем борьба с языками, значками и т.д.
Например: Исправить турецкий Charset Issue Html / PHP (iconv?)