Web студия "GrandView"
  Главная   Написать Контакты
   
   
О проекте
Руководство php
 

LX. Функции iconv

Введение

Это расширение предоставляет интерфейс к библиотеке преобразования кодировок iconv. Набор поддерживаемых кодировок зависит от реализации iconv в вашей системе. На некоторых платформах iconv может работать ненормально, в таких случаях рекомендуется установить библиотеку GNU libiconv.

Начиная с PHP 5.0.0, это в расширение добавлены некоторые вспомогательные функции, помогающие при написании сценариев, работающих с несколькими языками.

Требования

Операционные системы, отвечающие стандартам POSIX, поставляются с C-библиотеками, предоставляющими функциональность iconv. Иначе, вам придётся установить библиотеку libiconv от GNU.

Установка

Чтобы расширение было доступно, нужно указать ключ --with-iconv[=DIR] при запуске сценария конфигурирования.

Примечание для пользователей Windows®: Чтобы расширение было доступно, поместите библиотеку с именем iconv.dll или iconv-1.3.dll (для версий до 4.2.1), которая входит в поставку PHP для Windows®, в одну из её системных папок.

Этот модуль является частью PHP начиная с версии 5, так что библиотеки iconv.dll и php_iconv.dll более не нужны.

Настройка во время выполнения

Поведение этих функций зависит от установок в php.ini.

Таблица 1. Конфигурационные параметры, касающиеся Iconv

ПараметрЗначение по умолчаниюПеременная окружения
iconv.input_encodingICONV_INPUT_ENCODINGPHP_INI_ALL
iconv.output_encodingICONV_OUTPUT_ENCODINGPHP_INI_ALL
iconv.internal_encodingICONV_INTERNAL_ENCODINGPHP_INI_ALL
Для подробностей о константах PHP_INI_* см. ini_set().

Замечание: На данный момент iconv.input_encoding никак не используется.

Типы ресурсов

Данное расширение не определяет никакие типы ресурсов.

Предопределенные константы

Начиная с PHP 4.3.0 возможно узнать во время выполнения, какая реализация iconv используется расширением.

Таблица 2. Константы iconv

ИмяТипОписание
ICONV_IMPLstringРеализация
ICONV_VERSIONstringВерсия реализации

Замечание: Используйте эти константы для написания сценариев, независимых от реализации.

Начиная с PHP 5.0.0, доступны также следующие константы:

Таблица 3. константы iconv, доступные начиная с PHP 5.0.0

ИмяТипОписание
ICONV_MIME_DECODE_STRICTintegerБитовая маска, используемая для iconv_mime_decode()
ICONV_MIME_DECODE_CONTINUE_ON_ERRORintegerБитовая маска, используемая для iconv_mime_decode()

Содержание
iconv_get_encoding -- Возвращает значение внутренних переменных расширения
iconv_mime_decode_headers --  Декодирует несколько полей заголовка MIME
iconv_mime_decode --  Decodes a MIME header field
iconv_mime_encode --  Composes a MIME header field
iconv_set_encoding -- Устанавливает значение одной из внутренних переменных
iconv_strlen --  Возвращает количество символов в строке
iconv_strpos --  Возвращает позицию первого вхождения подстроки
iconv_strrpos --  Возвращает позицию последнего вхождения символа
iconv_substr --  Возвращает подстроку
iconv -- Преобразовывает символы строки в другую кодировку
ob_iconv_handler -- Convert character encoding as output buffer handler


iconv_get_encoding> <icap_store_event
Last updated: Fri, 26 Jan 2007
 
add a note add a note User Contributed Notes
Функции iconv
dermatin uses web de
26-Oct-2007 01:56
there's a little error in the post from andrej009 below.
it must be

case 159: $out .= "ss";break;

because the function converts umlauts to "normal" characters.
09-Apr-2007 02:43
Just a little fix for the utf8_to_windows1255 function above. The original function doesn't convert English characters well:

function utf8_to_windows1255($utf8) {
    $windows1255 = "";
    $chars = preg_split("//",$utf8);
    for ($i=1; $i<count($chars)-1; $i++) {
        $prefix = ord($chars[$i]);
        $suffix = ord($chars[$i+1]);
        //print ("<p>$prefix $suffix");
        if ($prefix==215) {
            $windows1255 .= chr($suffix+80);
            $i++;
        }
        elseif ($prefix==214) {
            $windows1255 .= chr($suffix+16);
            $i++;
        }
        else {
            $windows1255 .= $chars[$i];
        }
    }
    return $windows1255;
}
Erel Segal - Rent a Brain
25-Mar-2007 12:32
Note that my mysql_iconv will not translate correctly the Hebrew dotting symbols (Niqqud) - they will be converted into question marks.

Here is a straightforward (and not very efficient) solution:

function utf8_to_windows1255($utf8) {
    $windows1255 = "";
    $chars = preg_split("//",$utf8);
    for ($i=1; $i<count($chars)-1; $i+=2) {
        $prefix = ord($chars[$i]);
        $suffix = ord($chars[$i+1]);
        print ("<p>$prefix $suffix");
        if ($prefix==215)
            $windows1255 .= chr($suffix+80);
        elseif ($prefix==214)
            $windows1255 .= chr($suffix+16);
        else
            $windows1255 .= $chars[$i];
    }
    return $windows1255;
}
Fabian Ketchup
13-Sep-2006 06:00
// Simple file translation.

$FileToconvert = "menu.xml";
$FileConverted = "menu2.xml";

echo "Converting $FileToconvert ...";

file_put_contents($FileConverted, iconv("ISO-8859-1","UTF-8",file_get_contents($FileToconvert)));

echo "File converted in $FileConverted";
nod at mobi dot kz
17-Jul-2006 07:17
If you need convert string from Windows-1251 to 866. Some characters of 1251 haven't representation on DOS 866. For example, long dash -- chr(150) will be converted to 0, after that iconv finish his work and other charactes  will be skiped. Problem characters range in win1251 (128-159,163,165-167,169,171-174,177-182,187-190).

Use this:

//$text  -  input text in windows-1251
//$cout  -  output text in 866 (cp866, dos ru ascii)

for($i=0;$i<strlen($text);$i++) {
    $ord=ord($text[$i]);
    if($ord>=192&&$ord<=239) $cout.=chr($ord-64);
    elseif($ord>=240&&$ord<=255) $cout.=chr($ord-16);
    elseif($ord==168) $cout.=chr(240);
    elseif($ord==184) $cout.=chr(241);
    elseif($ord==185) $cout.=chr(252);
    elseif($ord==150||$ord==151) $cout.=chr(45);
    elseif($ord==147||$ord==148||$ord==171||$ord==187) $cout.=chr(34);
    elseif($ord>=128&&$ord<=190) $i=$i; //нет представления данному символу
    else $cout.=chr($ord);
}
andrej009
16-Mar-2006 04:22
There's one more special german character:
Новости
11 июля 2007
Сайт запущен
© 2007 info@grandviewstudio.com
Плакаты и постеры - широкоформатная печать 100 р/м2. ; Компьютерная помощь по чертаново ремонт компьютеров и компьютерная помощь мытищи починим все Z058440144362 Z348613067571