Автор оригинала: David Wong.
В PHP библиотека функций iconv может завершить преобразование различных наборов символов, что является незаменимой библиотекой базовых функций в программировании на PHP; однако иногда iconv перекодирует некоторые данные без причины. Например, при преобразовании символа ” – ” в GB2312 произойдет ошибка.
Давайте взглянем на использование этой функции.
Самое простое приложение-заменить GB2312 на UTF-8:
$text=iconv("GB2312","UTF-8",$text);Используется $text=iconv("UTF-8","GB2312",$text) В процессе, если встречаются некоторые специальные символы, такие как” -“,”. ” в английском названии и так далее, преобразование будет нарушено. Текст после этих символов больше не может быть преобразован.
Для решения этой проблемы можно использовать следующий код:
$text=iconv("UTF-8","GBK",$text);Вы не ошиблись, это так просто, не используйте GB2312, а пишите GBK, все в порядке.
Есть другой способ, второй параметр, плюс //ИГНОРИРОВАТЬ , игнорируйте ошибку следующим образом:
iconv("UTF-8","GB2312//IGNORE",$data);Между этими двумя методами нет конкретного сравнения, и первый метод (GBK вместо GB2312) лучше.
Описание iconv() в руководстве по PHP:
iconv
(PHP 4.0.5, PHP 5) iconv – Преобразование строки в запрошенную строку описания кодировки символов iconv ( строка in_charset, строка out_charset, строка str ) Выполняет преобразование набора символов в строке str из in_charset в out_charset. Возвращает преобразованную строку или значение FALSE при сбое. Если вы добавляете строку//TRANSLIT в out_charset, активируется транслитерация. Это означает, что если символ не может быть представлен в целевой кодировке, его можно аппроксимировать одним или несколькими похожими символами. Если вы добавляете строку//ИГНОРИРОВАТЬ, символы, которые не могут быть представлены в целевой кодировке, автоматически удаляются. В противном случае str вырезается из первого незаконного символа.
При использовании этой функции для преобразования кодировки строки следует отметить, что если UTF-8 преобразуется в GB2312, строка может быть усечена. В этом случае для решения проблемы могут быть использованы следующие методы:
$str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));Во втором параметре добавьте красную часть символа, чтобы указать, что если символ, соответствующий исходному коду, не может быть найден в целевом коде, для преобразования будут выбраны аналогичные символы. Здесь вы также можете использовать параметр://игнорировать, чтобы игнорировать символы, которые не могут быть преобразованы.
Игнорировать означает игнорировать ошибку преобразования. Без параметра ignore все строки после символа не могут быть сохранены.
Iconv не является функцией PHP по умолчанию, но также является модулем, установленным по умолчанию. Он должен быть установлен для использования.
Windows 2000 + PHP, если вы можете изменить его php .ini Файл, набор iconv.dll В то же время вам необходимо скопировать исходный установочный файл PHP iconv.dll Перейдите в свой WinNT/system32 (если ваша библиотека DLL указывает на этот каталог). В среде Linux, используя метод статической установки, вы можете добавить еще один элемент — с помощью iconv при настройке. Phpinfo может видеть элемент iconv. (Linux7.3+Apache4.06+php4.3.2)。
Mb_ convert_ Введение функций кодирования и iconv
кодирование mb_convert_encoding Эта функция используется для перекодирования. Я все время не понимал концепцию программного кодирования, но теперь, кажется, я немного просветлен. Однако в английском языке нет проблем с кодированием. Только китайские данные могут иметь эту проблему. Например, когда вы пишете программу с помощью Zend studio или EDITPLUS, вы используете кодировку GBK. Если данные необходимо ввести в базу данных, а код базы данных utf8, то вам необходимо закодировать и преобразовать данные, в противном случае ввод в базу данных станет искаженным кодом.
Сделайте GBK в UTF-8:
Еще один GB2312 для Big5:
Однако для использования вышеперечисленных функций вам необходимо установить его, но сначала вам нужно включить библиотеку расширений mbstring.
строка mb_convert_encoding ( строка str, строка to_encoding [, смешанная с from_encoding] ) Вам нужно сначала включить библиотеку расширений mbstring, чтобы php.ini;
строка iconv ( строка in_charset, строка out_charset, строка str ) Примечание: для второго параметра, в дополнение к указанию кодировки, в которую необходимо преобразовать, вы также можете добавить два суффикса://translate и//ignore, где//translate автоматически изменит символы, которые не могут быть непосредственно преобразованы в один или несколько похожих символов,//ignore будет игнорировать символы, которые не могут быть преобразованы, и эффект по умолчанию заключается в усечении первого незаконного символа.
Как правило, iconv используется только тогда, когда невозможно определить исходное кодирование или iconv не может нормально отображаться после преобразования mb_convert_encoding Функция.
$content = iconv("GBK", "UTF-8″, $content);
$content = mb_convert_encoding($content, "UTF-8″, "резюме
Вышесказанное составляет все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет некоторую справочную ценность для вашего обучения или работы. Спасибо вам за вашу поддержку developepaer. Если вы хотите узнать об этом больше, пожалуйста, проверьте соответствующие ссылки ниже
Оригинал: “https://developpaper.com/php-iconv-function-character-code-conversion/”