12.9. Кодирование с учетом кодировки
Исторически сложилось так, что в компьютерах текстовые данные представлялись в виде символьных строк. Каждый символ является одним байтом, который позволяет хранить до 256 различных символов. Это более чем достаточно для английского языка и охватывает почти все европейские языки. Азиатские языки никак не укладываются в рамки 256 символов. Для того чтобы вместить более широкий диапазон символов, было найдено решение - мультибайтовая кодировка. В таких кодировках для отображения одного визуального символа вместо одного байта используется несколько байтов.
Сценарии PHP написаны в стандартной однобайтовой кодировке ASCII, но существует возможность включать в сценарий строки мультибайтового текста. К сожалению, функции манипулирования текстами языка PHP предполагают работу с однобитовыми кодировками. Строка, кодированная с использованием двух байтов на символ, для функции strlen оказывается вдвое длиннее, чем при отображении. Решением является расширение, позволяющее работать с мультибайтовыми строками.
Мультибайтовую поддержку в PHP добавили Рю Хирокава (Rui Hirokawa) и Цукада Такуя (Tsukada Takuya).
string iconv(string from, string to, string text)
Функция iconv (листинг 12.86) преобразует строку из одной кодировки в другую. Эта функция становится доступной при наличии расширения iconv, которое включает также дескриптор буфера вывода (см. главу 8, "Браузер ввода-вывода").
Листинг 12.86. Функция iconv
<?php
print(iconv("ISO-88 59-1","ISO-8 859-15", "Core PHP Programming"));
?>
string mb_convert_case(string text, integer mode, string encoding)
Функция mb_convert_case (листинг 12.87) предназначена для замены регистра букв строки, переданной аргументом text. При этом используются режимы, описанные в табл. 12.11. Необязательный аргумент encoding отменяет стандартную кодировку.
В отличие от привычных функций наподобие strtolower эта функция "понимает", как меняется регистр букв с диакритическими знаками. Кроме того, можно воспользоваться функциями mb_strtolower и mb_strtoupper.
j Листинг 12.87. Функция mb_convert_case_
<?php
$text = "Jedes Jahr PHP gewinnt GroBere Popularitat!"; print(mb_convert_case($text, MB_CASE_LOWER) . '<br>'); print(mb_convert_case($text, MB_CASE_TITLE) . '<br>'); print(mb_convert_case($text, MB_CASE_UPPER) . '<br>');
?>
string mb_convert_encoding(string text, string target, array source)
Функция mb_convert_encoding преобразует строку из одной кодировки в другую. Необязательный третий аргумент по умолчанию задает внутреннюю кодировку PHP. С другой стороны, в этом аргументе можно задать один или несколько идентификаторов кодов, разделенных запятыми. В качестве общей ссылки на кодировки ASCII, JIS, UTF-8, EUC-JP и SJIS можно задавать аргумент auto. Кроме того, эта функция позволяет в качестве аргумента source задавать массив. string mb_convert_kana(string text, string option, array encoding)
Функция mb_convert_kana транслирует японские тексты между различными алфавитами, используемыми в японском языке. Процессом трансляции управляет аргумент option. Возможные варианты приведены в табл. 12.12. По умолчанию этот параметр равен KV. Необязательный аргумент source устанавливает кодировку, использованную с исходным текстом. По умолчанию устанавливает кодировка, принятая PHP по умолчанию.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Кодирование и декодирование. Часть Двадцать Вторая.
28-01-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Кодирование и декодирование. Часть Двадцать Первая. | PHP. Кодирование и декодирование. Часть Двадцать Третья. |