Дополнительно
Преобразование utf8-символов в iso-88591 и обратно в PHP
Некоторые из моих скриптов используют разные кодировки, и когда я пытаюсь объединить их, это становится проблемой.
Но я не могу изменить кодировку, которую они используют, вместо этого я хочу изменить кодировку результата из скрипта A и использовать его в качестве параметра в скрипте B.
Итак: есть ли простой способ изменить строку с UTF-8 на ISO-88591 в PHP? Я просмотрел utf_encode и _decode, но они не делают того, что я хочу. Почему не существует "utf2iso()"-функции или чего-то подобного?
Я не думаю, что у меня есть символы, которые не могут быть записаны в ISO-формате, так что это не должно быть большой проблемой.
43
10
Посмотрите на
iconv()
илиmb_convert_encoding()
. Кстати, почемуutf8_encode()
иutf8_decode()
не работают?Таким образом, по сути
все должны делать то же самое - при этом
utf8_en/decode()
не требует специального расширения,mb_convert_encoding()
требует ext/mbstring иiconv()
требует ext/iconv.Прежде всего, не используйте разные кодировки. Это приводит к беспорядку, и UTF-8, безусловно, является той, которую вы должны использовать везде.
Есть вероятность, что ваш входной код не ISO-8859-1, а что-то другое (ISO-8859-15, Windows-1252). Для преобразования из них используйте iconv или
mb_convert_encoding
.Тем не менее,
utf8_encode
иutf8_decode
должны работать для ISO-8859-1. Было бы хорошо, если бы вы опубликовали ссылку на файл или uuencoded или base64 пример строки, для которой преобразование не работает или дает неожиданные результаты.Это гораздо лучше использовать
$значение = mb_convert_encode($значение,'в формате HTML-сущности','кодировка UTF-8');
Особенно когда вы используете AJAX-вызов для подачи 'ИСО-8859-1' символы. Это работает для китайский, японский, чешский, немецкий и многие другие языки.
установить мета-тег в голове, как
воспользуйтесь ссылкой http://www.i18nqa.com/debug/utf8-debug.html чтобы заменить символы и символ, который вы хотите.
затем использовать как str_replace как
Его метод я использую и помогают много. Спасибо!
Вам необходимо использовать пакет iconv, а именно его функцию iconv.
Я использовал:
Я использую эту функцию:
Проверить мои функции в моем блоге http://www.unexpectedit.com/php/php-handling-non-english-characters-utf8
В моем случае после файлов с именами, содержащими эти символы были загружены, они даже не были видны с помощью filezilla! В cPanel файловый менеджер они были показаны ? (при черном фоне). И эта комбинация отображается корректно в браузере (HTML-документ является Западной кодировке):
Использовать html_entity_decode()
и
функция htmlentities()`.функция htmlentities()
форматы входных данных в кодировке utf8и
html_entity_decode()форматы его обратно в
ИСО-8859-1`.