Если вашему продукту требуется поддержка национальных языков (NLS), скорее всего, вы столкнетесь с необходимостью применения различных кодовых страниц для представления информации. В AIX входят несколько программ, предназначенных для перекодирования данных. Эти программы обычно называют перекодировщиками. В этом разделе вы найдете сведения по следующим темам:
При передаче данных из одного компьютера в другой может потребоваться преобразование из кодировки исходной машины в кодировку машины-получателя. Например, при передаче данных в систему VM рабочие станции преобразуют их из формата ISO8859-1 в формат EBCDIC.
Кодовым набором называется соответствие между кодовыми знаками и графическим представлением символов, а также между кодовыми знаками и управляющими символами. Преобразование данных требуется во всех случаях, когда они должны быть показаны пользователю не в той кодировке, в которых они получены или хранятся в системе.
В AIX предусмотрены два интерфейса
перекодировки:
команда iconv | Позволяет преобразовать данные из кодировки FromCode в кодировку ToCode. |
функции libiconv (Библиотека libiconv) | Вы можете напрямую вызывать процедуры этой библиотеки из ваших программ. |
В AIX предусмотрены библиотеки преобразования данных. Процедуры из этих библиотек можно напрямую вызывать из пользовательских программ. Эти библиотеки находятся в каталогах /usr/lib/nls/loc/iconv/* и /usr/lib/nls/loc/iconvTable/*.
В эти библиотеки входят не только стандартные, но и сетевые процедуры преобразования кодовых наборов. В сетевой среде способ преобразования данных зависит от кодовых наборов удаленных систем и применяемых протоколов связи.
Сетевые перекодировщики применяются для преобразования информации, передаваемой между компьютерами по сети. Для преобразования данных из одного внутреннего кодового набора в другой требуются специальные функции перекодировки. Для удобства пользователей в AIX был предусмотрен единый унифицированный интерфейс перекодировки, не зависящий от конкретных кодовых страниц. Такой интерфейс предоставляют функции iconv.
В AIX предусмотрено несколько
стандартных перекодировщиков, которые применяются с функциями и командой iconv. В следующем списке перечислены типы
перекодировщиков:
Типы перекодировщиков | Описание |
---|---|
Табличный перекодировщик (Список перекодировщиков для кодовых наборов PC, ISO и EBCDIC) | Преобразует однобайтовые кодовые наборы. Выполняет побайтное преобразование по таблице. |
Алгоритмический перекодировщик (Список перекодировщиков многобайтовых кодовых наборов) | Выполняет преобразования, которые невозможно сделать с помощью простого табличного перекодировщика. Примерами могут служить преобразования многобайтовых наборов символов. |
Сетевые перекодировщики | Описание |
---|---|
Список перекодировщиков для сетевого обмена--7-разрядные | Выполняет перекодирование между внутренними кодовыми наборами систем и стандартными 7-разрядными кодовыми наборами стандарта ISO2022. |
Список перекодировщиков для сетевого обмена--8-разрядные | Выполняет перекодирование между внутренними кодовыми наборами систем и стандартными 8-разрядными кодовыми наборами стандарта ISO2022. |
Список перекодировщиков для сетевого обмена--Сложный текст | Выполняет преобразование между сложным текстом и внутренними кодовыми наборами. |
Список перекодировщиков для сетевого обмена--uucode | Функционально эквивалентен командам uuencode и uudecode. |
Список перекодировщиков UCS-2 | Преобразует данные UCS-2 в другие кодировки и обратно. |
Список перекодировщиков для UTF-8 | Преобразует данные UTF-8 в другие кодировки и обратно. |
Прочие перекодировщики | Описание |
---|---|
Список прочих перекодировщиков | Применяются некоторыми перекодировщиками из числа описанных выше. |
Интерфейс прикладных программ
(API) iconv включает три функции, необходимые для
перекодирования:
iconv_open | Выполняет инициализацию процесса преобразования данных из кодировки FromCode в кодировку ToCode. Строка вызова будет зависеть от того, какие именно перекодировщики установлены в системе. Если инициализация выполнена успешно, эта процедура возвращает дескриптор перекодировщика iconv_t. |
Функция iconv | Вызывает функцию преобразования через дескриптор, полученный от функции
iconv_open. Принимает следующие параметры:
inbuf - ссылку на начало преобразуемых данных,
inbytesleft - объем данных в байтах, outbuf - ссылку на
выходной буфер, и outbytesleft - размер выходного буфера.
Если процесс перекодирования зависит от состояния входных данных, то для сброса функции в начальное состояние ее нужно вызвать с нулевым указателем в качестве значения inbuf. Если после сброса эта функция будет вызвана с ненулевым значением параметра inbuf, ее состояние будет откорректировано соответствующим образом. |
iconv_close | Закрывает и освобождает дескриптор преобразования, определенный параметром cd. |
В сетевой среде способ преобразования данных зависит от следующих факторов:
В следующей таблице приведены
рекомендации по применению различных методов перекодировки.
Дополнительная информация приведена в разделах Список перекодировщиков для сетевого обмена--7-разрядные и Список перекодировщиков для сетевого обмена--8-разрядные.
Обзор методов и рекомендации | ||||
| Передача данных между системами с одинаковыми кодовыми наборами | Передача данных между системами с разными или неизвестными кодовыми наборами | ||
| Протокол | Протокол | ||
Рекомендуемый метод | Только 7-разрядные данные | 8-разрядные данные | Только 7-разрядные данные | 8-разрядные данные |
без перекодирования | Недопустим | Оптимальный выбор | Недопустим | Недопустим, если кодовый набор удаленного компьютера неизвестен |
fold7 | OK | OK | Оптимальный выбор | OK |
fold8 | Недопустим | OK | Недопустим | Оптимальный выбор |
uucode | Оптимальный выбор | OK | Недопустим | Недопустим |
Если кодировки отправителя и получателя совпадают, возможны следующие варианты:
Список перекодировщиков для сетевого обмена--uucode | Функционально эквивалентен командам uuencode и uudecode. На наш взгляд, это оптимальный метод. |
Список перекодировщиков для сетевого обмена--7-разрядные | Преобразует данные между внутренними 7-разрядными кодовыми наборами. Этот метод удобен для передачи символов ASCII. |
Если кодировки отправителя и получателя не совпадают, то возможны следующие варианты:
Список перекодировщиков для сетевого обмена--8-разрядные | Преобразует внутренние кодовые наборы в стандартные форматы сетевого обмена. Данные передаются в 8-разрядном формате, из которого получатель сможет восстановить их в своей собственной кодировке. |
Ниже приведены примеры применения функции iconv_open в различных ситуациях:
Если протокол допускает передачу 8-разрядных данных, то преобразование не требуется.
Если протокол допускает передачу только 7-разрядных данных, рекомендуется выполнить следующие операции:
Отправитель: cd = iconv_open("uucode", nl_langinfo(CODESET)); Получатель: cd = iconv_open(nl_langinfo(CODESET), "uucode");
Если кодовый набор получателя неизвестен и протокол допускает передачу 8-разрядных данных, рекомендуется выполнить следующие операции:
Отправитель: cd = iconv_open("fold8", nl_langinfo(CODESET)); Получатель: cd = iconv_open(nl_langinfo(CODESET),"fold8" );
Если протокол допускает передачу только 7-разрядных данных, рекомендуется выполнить следующие операции:
Отправитель: cd = iconv_open("fold7", nl_langinfo(CODESET)); Получатель: cd = iconv_open(nl_langinfo(CODESET), "fold7" );
Функция iconv_open использует для поиска перекодировщика переменную среды LOCPATH; при этом имя перекодировщика должно быть указано в формате
iconv/старый-кодовый-набор_новый-кодовый-набор
старый-кодовый-набор обозначает кодовый набор отправителя, а новый-кодовый-набор - кодовый набор получателя. Строки разделяются символом подчеркивания.
Примечание: все программы setuid и setgid игнорируют значение переменной среды LOCPATH.
Поскольку перекодировщик iconv представляет собой загружаемый объектный модуль, в 32- и 64-разрядных средах должны применяться различные модули. В 64-разрядной среде применяется процедура iconv_open, которая пользуется перекодировщиками следующего вида:
iconv/FromCodeSet_ToCodeSet__64.
Библиотека iconv автоматически определяет тип загружаемого объекта (для 32- или 64-разрядной среды).
Если функция iconv_open не может найти перекодировщик, она использует значения исходного/целевого кодового набора для поиска файла табличного преобразования. Файлы, в котором хранятся таблицы преобразования создаются командой genxlt.
Перекодировщик iconvTable использует для поиска файла переменную среды LOCPATH; при этом имя файла должно быть задано в формате
iconvTable/старый-кодовый-набор_новый-кодовый-набор
Если перекодировщик найден, он загружает и иинициализирует его. Дескриптор перекодировщика iconv_t сбрасывается в свое исходное состояние.
Перекодировщики - это исполняемые
функции, которые преобразуют данные согласно некоторому набору правил.
Таблицы перекодировки - это массивы данных, задающие однозначное побайтовое
преобразование информации. Перекодировщики и таблицы хранятся в разных
каталогах:
/usr/lib/nls/loc/iconv | Перекодировщики |
/usr/lib/nls/loc/iconvTable | Таблицы перекодировки |
После того как программа перекодировки откомпилирована и скомпонована с библиотекой libiconv.a, ее помещают в каталог /usr/lib/nls/loc/iconv.
Для того чтобы создать табличный перекодировщик, сначала создайте файл таблицы преобразования. Затем с помощью команды genxlt преобразуйте эти таблицы в формат, применяемый табличными перекодировщиками. Поместите полученный файл в каталог /usr/lib/nls/loc/iconvTable .
Таблицы преобразования для кодировки Unicode (или UCS-2) хранятся в следующем каталоге:
$LOCPATH/uconvTable/*CodeSet*
Перекодировщик $LOCPATH/uconv/UCSTBL предназначен для преобразования данных в кодировку UCS-2 и обратно с помощью утилит iconv. Для того чтобы функции iconv могли работать с таблицами преобразования uconvTable, в каталоге $LOCPATH/iconv нужно настроить необходимые связи. Например, для кодового набора "X":
ln -s /usr/lib/nls/loc/uconv/UCSTBL /usr/lib/nls/loc/iconv/X_UCS-2 ln -s /usr/lib/nls/loc/uconv/UCSTBL /usr/lib/nls/loc/iconv/UCS-2_X
Программа "Универсальный перекодировщик" может выполнять преобразования между любыми двумя кодовыми наборами, для каждого из которых возможно преобразование в UCS-2 и обратно. Предположим, что существуют следующие таблицы перекодировки:
X -> UCS-2 UCS-2 -> Y
Тогда можно однозначно определить следующее преобразование:
X -> UCS-2 -> Y
Это преобразование можно будет выполнить с помощью $LOCPATH/iconv/Universal_UCS_Conv. Преобразование X->Y задается путем установки связей с универсальным перекодировщиком, например:
ln-s /usr/lib/nls/loc/iconv/Universal_UCS_Conv /usr/lib/nls/loc/iconv/X_Y
Интерфейс iconv представляет собой набор функций инициализации, выполнения и сброса процессов перекодировки:
Ниже показано, каким образом с помощью указанных функций вы можете создать фильтр-перекодировщик, принимающий в качестве исходных аргументов параметры ИсходныйКодовыйНабор и ЦелевойКодовыйНабор.
#include <stdio.h> #include <nl_types.h> #include <iconv.h> #include <string.h> #include <errno.h> #include <locale.h> #define ICONV_DONE() (r>=0) #define ICONV_INVAL() (r<0) && (errno==EILSEQ)) #define ICONV_OVER() (r<0) && (errno==E2BIG)) #define ICONV_TRUNC() (r<0) && (errno==EINVAL)) #define USAGE 1 #define ERROR 2 #define INCOMP 3 char ibuf[BUFSIZ], obuf[BUFSIZ]; extern int errno; main (argc,argv) int argc; char **argv; {
size_t ileft,oleft; nl_catd catd; iconv_t cd; int r; char *ip,*op; setlocale(LC_ALL,""); catd = catopen (argv[0],0); if(argc!=3){ fprintf(stderr, catgets (catd,NL_SETD,USAGE,"usage;conv fromcode tocode\n")); exit(1); } cd=iconv_open(argv[2],argv[1]); ileft=0; while(!feof(stdin)) {
/* * After the next operation,ibuf will * contain new data plus any truncated * data left from the previous read. */ ileft+=fread(ibuf+ileft,1,BUFSIZ-ileft,stdin); do { ip=ibuf; op=obuf; oleft=BUFSIZ; r=iconv(cd,&ip,&ileft,&op,&oleft); if(ICONV_INVAL()){ fprintf(stderr, catgets(catd,NL_SETD,ERROR,"invalid input\n")); exit(2); } fwrite(obuf,1,BUFSIZ-oleft,stdout); if(ICONV_TRUNC() || ICONV_OVER()) /* *Data remaining in buffer-copy *it to the beginning */ memcpy(ibuf,ip,ileft); /* *loop until all characters in the input *buffer have been converted. */ } while(ICONV_OVER()); } if(ileft!=0){ /* *This can only happen if the last call *to iconv() returned ICONV_TRUNC, meaning *the last data in the input stream was *incomplete. */ fprintf(stderr,catgets(catd,NL_SETD,INCOMP,"input incomplete\n")); exit(3); } iconv_close(cd); exit(0); }
Кодовым наборам присвоены имена в
формате CodesetRegistry-CodesetEncoding,
где:
Переменная from,to,
используемая командой iconv и функцией iconv_open, определяет файл с именем в формате
/usr/lib/nls/loc/iconv/%f_%t
или
/usr/lib/nls/loc/iconvTable/%f_%t,
где:
%f | Указывает имя кодового набора отправителя (FromCode). |
%t | Указывает имя кодового набора получателя (ToCode). |
Перекодировщики преобразуют данные из одного кодового набора в другой. Перекодировщики, поддерживаемые библиотекой ICONV, описаны в разделах, следующих ниже. Все перекодировщики, поставляемые совместно с BOS, находятся в каталоге /usr/lib/nls/loc/iconv/* или /usr/lib/nls/loc/iconvTable/*.
В этих каталогах также содержатся частные перекодировщики; то есть те, к которым обращаются только другие перекодировщики. Однако, пользователи и программы никогда не используют их, а лишь те перекодировщики, которые приведенных в следующих списках.
Если перекодировщик, поставляемый с BOS Runtime Environment отсутствует в этом списке, то они считаются частными и подлежат изменению или удалению. Перекодировщики, поставляемые с другими продуктами можно также помещать в каталоги /usr/lib/nls/loc/iconv/* и /usr/lib/nls/loc/iconvTable/*.
Программистам рекомендуется использовать либо зарегистрированные имена кодовых наборов, или имена связанные с конкретным приложением. "X Consortium" поддерживает справочный реестр имен кодовых наборов. Дополнительная информация о кодовых наборах приведена в разделе Кодовые наборы - Обзор.
Эти перекодировщики выполняют преобразования между однобайтовыми кодовыми наборами PC, ISO и EBCDIC. Они позволяют выполнять двухсторонние перекодировки между PC и ISO, PC и EBCDIC, ISO и EBCDIC.
Возможны преобразования между совместимыми кодовыми наборами, например из латиницы-1 в латиницу-1, из греческого в греческий. Однако, эти перекодировщики не поддерживают преобразования между различными кодовыми наборами EBCDIC для национальных языков. Более подробные сведения о перекодировках между несовместимыми кодовыми наборами приведены в разделах Список перекодировщиков для сетевого обмена--7-разрядные и Список перекодировщиков для сетевого обмена--8-разрядные.
Для создания перекодировочных таблиц в каталоге iconvTable предназначена команда genxlt.
Эта таблица содержит список названий совместимых кодовых наборов. В каждой строке таблицы указаны названия исходного и конечного кодового набора, которые потребуются для запуска перекодировки.
Примечание: Кодовые наборы PC и ISO основаны на кодировке ASCII.
Совместимость кодовых наборов | ||||
Набор символов | Языки | PC | ISO | EBCDIC |
Латиница-1 | Английский (США), Португальский, Французский (Канада) | IBM-850 | ISO8859-1 | IBM-037 |
Латиница-1 | Датский, Норвежский | IBM-850 | ISO8859-1 | IBM-277 |
Латиница-1 | Финский, Шведский | IBM-850 | ISO8859-1 | IBM-278 |
Латиница-1 | Итальянский | IBM-850 | ISO8859-1 | IBM-280 |
Латиница-1 | Японский | IBM-850 | ISO8859-1 | IBM-281 |
Латиница-1 | Испанский | IBM-850 | ISO8859-1 | IBM-284 |
Латиница-1 | Английский (Великобритания) | IBM-850 | ISO8859-1 | IBM-285 |
Латиница-1 | Немецкий | IBM-850 | ISO8859-1 | IBM-273 |
Латиница-1 | Французский | IBM-850 | ISO8859-1 | IBM-297 |
Латиница-1 | Бельгийский, Немецкий (Швейцария) | IBM-850 | ISO8859-1 | IBM-500 |
Латиница-2 | Хорватский, Чехословацкий, Венгерский, Польский, Румынский, Сербский латинский, Словацкий, Словенский | IBM-852 | ISO88859-2 | IBM-870 |
Кириллица | Болгарский, Македонский, Сербский (кириллица), Русский | IBM-855 | ISO8859-5 | IBM-880 IBM-1025 |
Кириллица | Русский | IBM-866 | ISO8859-5 | IBM-1025 |
Иврит | Иврит | IBM-856 IBM-862 | ISO8859-8 | IBM-424 IBM-803 |
Турецкие символы | Турецкий | IBM-857 | ISO8859-9 | IBM-1026 |
Арабские символы | Арабский | IBM-864 IBM-1046 | ISO8859-6 | IBM-420 |
Греческие символы | Греческий | IBM-869 | ISO8859-7 | IBM-875 |
Греческие символы | Греческий | IBM-869 | ISO8859-7 | IBM-875 |
Балтийские символы | Литовский, Латвийский, Эстонский | IBM-921 IBM-922 |
| IBM-1112 IBM-1122 |
Примечание: Если определенный символ отсутствует в целевом кодовом наборе, то он будет преобразован в некоторый символ замещения, определяемый данным кодовым набором.
Следующая таблица содержит
описание перекодировщиков inconvTable, расположенных в каталоге
/usr/lib/nls/loc/iconvTable:
Перекодировщик iconvTable | ||
Таблица преобразования | Описание | Язык |
IBM-037_IBM-850 | из IBM-037 в IBM-850 | Английский (США), Португальский, Французский (Канада) |
IBM-273_IBM-850 | из IBM-273 в IBM-850 | Немецкий |
IBM-277_IBM-850 | из IBM-277 в IBM-850 | Датский, Норвежский |
IBM-278_IBM-850 | из IBM-278 в IBM-850 | Финский, Шведский |
IBM-280_IBM-850 | из IBM-280 в IBM-850 | Итальянский |
IBM-281_IBM-850 | из IBM-281 в IBM-850 | Японский (латинские символы) |
IBM-284_IBM-850 | из IBM-284 в IBM-850 | Испанский |
IBM-285_IBM-850 | из IBM-285 в IBM-850 | Английский (Великобритания) |
IBM-297_IBM-850 | из IBM-297 в IBM-850 | Французский |
IBM-420_IBM_1046 | из IBM-420 в IBM-1046 | Арабский |
IBM-424_IBM-856 | из IBM-424 в IBM-856 | Иврит |
IBM-424_IBM-862 | из IBM-424 в IBM-862 | Иврит |
IBM-500_IBM-850 | из IBM-500 в IBM-850 | Бельгийский, Немецкий (Швейцария) |
IBM-803_IBM-856 | из IBM-803 в IBM-856 | Иврит |
IBM-803_IBM-862 | из IBM-803 в IBM-862 | Иврит |
IBM-850_IBM-037 | из IBM-850 в IBM-037 | Английский (США), Португальский, Французский (Канада) |
IBM-850_IBM-273 | из IBM-850 в IBM-273 | Немецкий |
IBM-850_IBM-277 | из IBM-850 в IBM-277 | Датский, Норвежский |
IBM-850_IBM-278 | из IBM-850 в IBM-278 | Финский, Шведский |
IBM-850_IBM-280 | из IBM-850 в IBM-280 | Итальянский |
IBM-850_IBM-281 | из IBM-850 в IBM-281 | Японский (латинские символы) |
IBM-850_IBM-284 | из IBM-850 в IBM-284 | Испанский |
IBM-850_IBM-285 | из IBM-850 в IBM-285 | Английский (Великобритания) |
IBM-850_IBM-297 | из IBM-850 в IBM-297 | Французский |
IBM-850_IBM-500 | из IBM-850 в IBM-500 | Бельгийский, Немецкий (Швейцария) |
IBM-856_IBM-424 | из IBM-856 в IBM-424 | Иврит |
IBM-856_IBM-803 | из IBM-856 в IBM-803 | Иврит |
IBM-856_IBM-862 | из IBM-856 в IBM-862 | Иврит |
IBM-862_IBM-424 | из IBM-862 в IBM-424 | Иврит |
IBM-862_IBM-803 | из IBM-862 в IBM-803 | Иврит |
IBM-862_IBM-856 | из IBM-862 в IBM-856 | Иврит |
IBM-864_IBM-1046 | из IBM-864 в IBM-1046 | Арабский |
IBM-921_IBM-1112 | из IBM-921 в IBM-1112 | Литовский, Латвийский |
IBM-922_IBM-1122 | из IBM-922 в IBM-1122 | Эстонский |
IBM-1112_IBM-921 | из IBM-1121 в IBM-921 | Литовский, Латвийский |
IBM-1122_IBM-922 | из IBM-1122 в IBM-922 | Эстонский |
IBM-1046_IBM-420 | из IBM-1046 в IBM-420 | Арабский |
IBM-1046_IBM-864 | из IBM-1046 в IBM-864 | Арабский |
IBM-037_ISO8859-1 | из IBM-037 в ISO8859-1 | Английский (США), Португальский, Французский (Канада) |
IBM-273_ISO8859-1 | из IBM-273 в ISO8859-1 | Немецкий |
IBM-277_ISO8859-1 | из IBM-277 в ISO8859-1 | Датский, Норвежский |
IBM-278_ISO8859-1 | из IBM-278 в ISO8859-1 | Финский, Шведский |
IBM-280_ISO8859-1 | из IBM-280 в ISO8859-1 | Итальянский |
IBM-281_ISO8859-1 | из IBM-281 в ISO8859-1 | Японский (латинские символы) |
IBM-284_ISO8859-1 | из IBM-284 в ISO8859-1 | Испанский |
IBM-285_ISO8859-1 | из IBM-285 в ISO8859-1 | Английский (Великобритания) |
IBM-297_ISO8859-1 | из IBM-297 в ISO8859-1 | Французский |
IBM-420_ISO8859-6 | из IBM-420 в ISO8859-6 | Арабский |
IBM-424_ISO8859-8 | из IBM-424 в ISO8859-8 | Иврит |
IBM-500_ISO8859-1 | из IBM-500 в ISO8859-1 | Бельгийский, Немецкий (Швейцария) |
IBM-803_ISO8859-8 | из IBM-803 в ISO8859-8 | Иврит |
IBM-852_ISO8859-2 | из IBM-852 с ISO8859-2 | Хорватский, Чехословацкий, Венгерский, Польский, Румынский, Сербский латинский, Словацкий, Словенский |
IBM-855_ISO8859-5 | из IBM-855 в ISO8859-5 | Болгарский, Македонский, Сербский (кириллица), Русский |
IBM-866_ISO8859-5 | из IBM-866 в ISO8859-5 | Русский |
IBM-869_ISO8859-7 | из IBM-869 в ISO8859-7 | Греческий |
IBM-875_ISO8859-7 | из IBM-875 в ISO8859-7 | Греческий |
IBM-870_ISO8859-2 | из IBM-870 с ISO8859-2 | Хорватский Чехословацкий, Венгерский, Польский, Румынский, Сербский, Словацкий, Словенский |
IBM-880_ISO8859-5 | из IBM-880 в ISO8859-5 | Болгарский, Македонский, Сербский (кириллица), Русский |
IBM-1025_ISO8859-5 | из IBM-1025 в ISO8859-5 | Болгарский, Македонский, Сербский (кириллица), Русский |
IBM-857_ISO8859-9 | из IBM-857 в ISO8859-9 | Турецкий |
IBM-1026_ISO8859-9 | из IBM-1026 в ISO8859-9 | Турецкий |
IBM-850_ISO8859-1 | из IBM-850 в ISO8859-1 | Латинский |
IBM-856_ISO8859-8 | из IBM-856 в ISO8859-8 | Иврит |
IBM-862_ISO8859-8 | из IBM-862 в ISO8859-8 | Иврит |
IBM-864_ISO8859-6 | из IBM-864 в ISO8859-6 | Арабский |
IBM-1046_ISO8859-6 | из IBM-1046 в ISO8859-6 | Арабский |
ISO8859-1_IBM-850 | из ISO8859-1 в IBM-850 | Латинский |
ISO8859-6_IBM-864 | из ISO8859-6 в IBM-864 | Арабский |
ISO8859-6_IBM-1046 | из ISO8859-6 в IBM-1046 | Арабский |
ISO8859-8_IBM-856 | из ISO8859-8 в IBM-856 | Иврит |
ISO8859-8_IBM-862 | из ISO8859-8 в IBM-862 | Иврит |
ISO8859-1_IBM-037 | из ISO8859-1 в IBM-037 | Английский (США), Португальский, Французский (Канада) |
ISO8859-1_IBM-273 | из ISO8859-1 в IBM-273 | Немецкий |
ISO8859-1_IBM-277 | из ISO8859-1 в IBM-277 | Датский, Норвежский |
ISO8859-1_IBM-278 | из ISO8859-1 в IBM-278 | Финский, Шведский |
ISO8859-1_IBM-280 | из ISO8859-1 в IBM-280 | Итальянский |
ISO8859-1_IBM-281 | из ISO8859-1 в IBM-281 | Японский (латинские символы) |
ISO8859-1_IBM-284 | из ISO8859-1 в IBM-284 | Испанский |
ISO8859-1_IBM-285 | из ISO8859-1 в IBM-285 | Английский (Великобритания) |
ISO8859-1_IBM-297 | из ISO8859-1 в IBM-297 | Французский |
ISO8859-1_IBM-500 | из ISO8859-1 в IBM-500 | Бельгийский, Немецкий (Швейцария) |
ISO8859-2_IBM-852 | из ISO8859-2 в IBM-852 | Хорватский, Чехословацкий, Венгерский, Польский, Румынский, Сербский латинский, Словацкий, Словенский |
ISO8859-2_IBM-870 | из ISO8859-2 в IBM-870 | Хорватский Чехословацкий, Венгерский, Польский, Румынский, Сербский (латинские символы), Словацкий, Словенский |
ISO8859-5_IBM-855 | из ISO8859-5 в IBM-855 | Болгарский, Македонский, Сербский (кириллица), Русский |
ISO8859-5_IBM-880 | из ISO8859-5 в IBM-880 | Болгарский, Македонский, Сербский (кириллица), Русский |
ISO8859-5_IBM-1025 | из ISO8859-5 в IBM-1025 | Болгарский, Македонский, Сербский (кириллица), Русский |
ISO8859-6_IBM-420 | из ISO8859-6 в IBM-420 | Арабский |
ISO8859-5_IBM-866 | из ISO8859-5 в IBM-866 | Русский |
ISO8859-7_IBM-869 | из ISO8859-7 в IBM-869 | Греческий |
ISO8859-7_IBM-875 | из ISO8859-7 в IBM-875 | Греческий |
ISO8859-8_IBM-424 | из ISO8859-8 в IBM-424 | Иврит |
ISO8859-8_IBM-803 | из ISO8859-8 в IBM-803 | Иврит |
ISO8859-9_IBM-857 | из ISO8859-9 в IBM-857 | Турецкий |
ISO8859-9_IBM-1026 | из ISO8859-9 в IBM-1026 | Турецкий |
Перекодировщики кодовых наборов многобайтовых символов преобразуют данные между следующими кодировками:
Эта таблица содержит список названий совместимых кодовых наборов. В
каждой строке таблицы указаны названия исходного и конечного кодового набора,
которые потребуются для запуска перекодировки.
Совместимость кодовых наборов | |||
Язык | PC | ISO | EBCDIC |
Японский | IBM-932 | IBM-eucJP | IBM-930, IBM-939 |
Японский
(совместимый с MS) | IBM-943 | IBM-eucJP | IBM-930, IBM-939 |
Корейский | IBM-934 | IBM-eucKR | IBM-933 |
Традиционный китайский | IBM-938, big-5 | IBM-eucTW | IBM-937 |
Упрощенный китайский | IBM-1381 | IBM-eucCN | IBM-935 |
Этот список содержит описания перекодировщиков кодовых наборов
многобайтовых символов из каталога /usr/lib/nls/loc/iconv.
Этот перекодировщик позволяет преобразовывать данные между внутренним кодом и стандартными форматами для сетевого обмена 7-разрядными данными (fold7). Называние fold7 обозначает, что эта кодировка позволяет передавать данные по 7-разрядным почтовым протоколам. Это кодировки на основе ISO2022. Дополнительные сведения о кодировках fold7 вы найдете в разделе Библиотека libiconv.
Перекодировщики fold7 преобразуют
символы из кодового набора в каноническую 7-разрядную кодировку, в которой
идентифицируется каждый отдельный символ. Преобразование такого типа
оказывается целесообразным в сетях, где кодовые наборы клиентов различны, но
наборы символов - одинаковые. Например:
IBM-850 <--> ISO8859-1 | Стандартные латинские символы |
IBM-932<-->IBM-eucJP | Стандартные японские символы |
Следующие управляющие
последовательности обозначают стандартные кодовые наборы:
При преобразовании данных из кодового набора в fold7 управляющую последовательность, обозначающую данных кодовый набор, выбирают по порядку, в соответствии со списком. Например, символы JISX0208.1983-0 обозначает управляющая последовательность 01/11 01/04 04/02.
В следующем списке приведены
описания перекодировщиков fold7, расположенных в каталоге
/usr/lib/nls/loc/iconv:
Этот перекодировщик позволяет преобразовывать данные между внутренним кодом и стандартными форматами для сетевого обмена 8-разрядными данными (fold8). Называние fold8 обозначает, что эта кодировка позволяет передавать данные по 8-разрядным почтовым протоколам. Это кодировки на основе ISO2022. Дополнительные сведения о кодировках fold8 вы найдете в разделе Библиотека libiconv.
Перекодировщики fold8 преобразуют
символы из определенного кодового набора в каноническую 8-разрядную кодировку,
в которой идентифицируется каждый отдельный символ. Преобразование
такого типа оказывается целесообразным в сетях, где кодовые наборы клиентов
различны, но наборы символов - одинаковые. Например:
IBM-850 <--> ISO8859-1 | Стандартные латинские символы |
IBM-932 <--> IBM-eucJP | Стандартные японские символы |
Следующие управляющие последовательности обозначают стандартные кодовые
наборы.
При преобразовании данных из кодового набора в fold8 управляющую последовательность, обозначающую данных кодовый набор, выбирают по порядку, в соответствии со списком. Например, символы JISX0208.1983-0 обозначает управляющая последовательность 01/11 02/04 02/08 04/02 .
Этот список содержит описания
перекодировщиков fold8 из каталога /usr/lib/nls/loc/iconv:
Такие перекодировщики выполняют преобразование между сложным текстом и внутренними кодовыми наборами.
Сложный текст представляет собой кодировку для сетевого обмена, которая была определена X Consortium. Применяется для передачи текста между клиентами X. Сложный текст основан на стандарте ISO2022 и может кодировать большинство символов с помощью стандартных управляющих последовательностей. Кроме того, в нем предусмотрены расширения для кодирования частных кодовых наборов. Все поддерживаемые кодовые наборы предоставляют возможность преобразования данных в/из сложного текста. Обозначение сложного текста - ct.
Ниже по порядку приведен список
управляющих последовательностей, обозначающих стандартные кодовые
наборы.
Этот список содержит описания перекодировщиков сложного текста из каталога
/usr/lib/nls/loc/iconv:
Этот перекодировщик выполняет точно такие же преобразования, как и команды uuencode и uudecode.
Перекодировка из uucode происходит порциями по 62 байт (включая замыкающий запись символ начала строки), которые преобразуются в 45 байт в буфере outbuf.
Этот список содержит описания перекодировщиков uucode из каталога
/usr/lib/nls/loc/iconv:
UCS-2 - это универсальная 16-разрядная кодировка. Ее описание приведено в разделе Кодовые наборы - Обзор. Эти перекодировщики выполняют преобразования в обе стороны между любым кодовым набором и UCS-2.
Перекодировщики UCS-2 находятся в каталогах /usr/lib/nls/loc/uconvTable и /usr/lib/nls/loc/uconv. Для создания новых перекодировщиков UCS-2 или настройки уже существующих предусмотрена команда uconvdef.
Перекодировщик /usr/lib/nls/loc/iconv/Universal_UCS_Conv преобразует любой кодовый набор X в любой кодовый набор Y путем установки необходимых связей:
cd /usr/lib/nls/loc/iconv В -s /usr/lib/nls/loc/uconv/Universal_UCS_Conv X_Y В -s /usr/lib/nls/loc/uconv/UCSTBL X_UCS-2 В -s /usr/lib/nls/loc/uconv/UCSTBL UCS-2_Y В -s /usr/lib/nls/loc/uconv/UCSTBL X В -s /usr/lib/nls/loc/uconv/UCSTBL Y
UTF-8 - это универсальная многобайтовая кодировка. Ее описание приведено в разделе UCS-2 и UTF-8. Перечисленные перекодировщики выполняют преобразования в обе стороны между любым кодовым набором и UTF-8.
Как правило, перекодировка UTF-8 выполняется с помощью Universal_UCS_Conv
(см. Список перекодировщиков UCS-2) и /usr/lib/nls/loc/uconv/UTF-8.
Перекодировщик | Описание |
---|---|
ISO8859-1 | UTF-8 <--> ISO Латиница-1 |
ISO8859-2 | UTF-8 <--> ISO Латиница-2 |
ISO8859-3 | UTF-8 <--> ISO Латиница-3 |
ISO8859-4 | UTF-8 <--> ISO Латиница-4 |
ISO8859-5 | UTF-8 <--> ISO Кириллица |
ISO8859-6 | UTF-8 <--> Символы ISO для арабского языка |
ISO8859-7 | UTF-8 <--> Символы ISO для греческого языка |
ISO8859-8 | UTF-8 <--> Символы ISO для иврита |
ISO8859-9 | UTF-8 <--> Символы ISO для турецкого языка |
JISX0201.1976-0 | UTF-8 <--> Кодировка JISX0201-0 для японского языка |
JISX0208.1983-0 | UTF-8 <--> Кодировка JISX0208-0 для японского языка |
CNS11643.1986-1 | UTF-8 <--> Кодировка CNS11643-1 для китайского языка |
CNS11643.1986-2 | UTF-8 <--> Кодировка CNS11643-2 для китайского языка |
KSC5601.1987-0 | UTF-8 <--> Кодировка KSC5601-0 для корейского языка |
IBM-eucCN | UTF-8 <--> Кодировка EUC для упрощенного китайского языка |
IBM-eucJP | UTF-8 <--> Кодировка EUC для японского языка |
IBM-eucKR | UTF-8 <--> Кодировка EUC для корейского языка |
IBM-eucTW | UTF-8 <--> Кодировка EUC для традиционного китайского языка |
IBM-udcJP | UTF-8 <--> Пользовательские символы для японского языка |
IBM-udcTW | UTF-8 <--> Пользовательские символы для традиционного китайского языка |
IBM-sbdTW | UTF-8 <--> Специальные символы IBM для традиционного китайского языка |
UCS-2 | UTF-8 <--> UCS-2 |
IBM-437 | UTF-8 <--> Кодовая страница PC для США |
IBM-850 | UTF-8 <--> Кодовая страница PC для Латиницы-1 |
IBM-852 | UTF-8 <--> Кодовая страница PC для Латиницы-2 |
IBM-857 | UTF-8 <--> Кодовая страница PC для турецкого языка |
IBM-860 | UTF-8 <--> Кодовая страница PC для бразильского языка (Португалия) |
IBM-861 | UTF-8 <--> Кодовая страница PC для исландского языка |
IBM-863 | UTF-8 <--> Кодовая станица PC для французского языка (Канада) |
IBM-865 | UTF-8 <--> Кодовая страница PC для языков скандинавских стран |
IBM-869 | UTF-8 <--> Кодовая страница PC для греческого языка |
IBM-921 | UTF-8 <--> Кодовая страница данных для языков балтийских стран |
IBM-922 | UTF-8 <--> Кодовая страница для эстонского языка |
IBM-932 | UTF-8 <--> Кодовая страница PC для японского языка |
IBM-943 | UTF-8 <--> Кодовая страница PC для японского языка |
IBM-934 | UTF-8 <--> Кодовая страница PC для корейского языка |
IBM-935 | UTF-8 <--> Кодировка EBCDIC для упрощенного китайского языка |
IBM-936 | UTF-8 <--> Кодовая страница PC для китайского языка (КНР) |
IBM-938 | UTF-8 <--> Кодовая страница PC для китайского языка (Тайвань) |
IBM-942 | UTF-8 <--> Расширенная кодовая страница PC для японского языка |
IBM-944 | UTF-8 <--> Кодовая страница PC для корейского языка |
IBM-946 | UTF-8 <--> Кодовая страница SAA для китайского языка (КНР) |
IBM-948 | UTF-8 <--> Кодовая страница PC для традиционного китайского языка |
IBM-1124 | UTF-8 <--> Кодовая страница PC для украинского языка |
IBM-1129 | UTF-8 <--> Кодовая страница PC для вьетнамского языка |
TIS-620 | UTF-8 <--> Кодовая страница PC для тайского языка |
IBM-037 | UTF-8 <--> Кодировка EBCDIC (США и Канада) |
IBM-273 | UTF-8 <--> Кодировка EBCDIC (Германия и Австрия) |
IBM-277 | UTF-8 <--> Кодировка EBCDIC (Дания и Норвегия) |
IBM-278 | UTF-8 <--> Кодировка EBCDIC (Финляндия и Швеция) |
IBM-280 | UTF-8 <--> Кодировка EBCDIC (Италия) |
IBM-284 | UTF-8 <--> Кодировка EBCDIC (Испания и Латинская Америка) |
IBM-285 | UTF-8 <--> Кодировка EBCDIC (Великобритания) |
IBM-297 | UTF-8 <--> Кодировка EBCDIC (Франция) |
IBM-500 | UTF-8 <--> Интернациональная кодировка EBCDIC |
IBM-875 | UTF-8 <--> Кодировка EBCDIC (Греция) |
IBM-930 | UTF-8 <--> Кодировка EBCDIC (японские символы Катакана-Канжи) |
IBM-933 | UTF-8 <--> Кодировка EBCDIC (Корея) |
IBM-937 | UTF-8 <--> Кодировка EBCDIC (традиционный китайский язык) |
IBM-939 | UTF-8 <--> Кодировка EBCDIC (японские символы Катакана-Канжи) |
IBM-1026 | UTF-8 <--> Кодировка EBCDIC (Турция) |
IBM-1112 | UTF-8 <--> Кодировка EBCDIC (многоязыковая кодировка для балтийских стран) |
IBM-1122 | UTF-8 <--> Кодировка EBCDIC (Эстония) |
IBM-1124 | UTF-8 <--> Кодировка EBCDIC (Украина) |
IBM-1129 | UTF-8 <--> Кодировка EBCDIC (Вьетнам) |
IBM-1381 | UTF-8 <--> Кодовая страница PC для упрощенного китайского языка |
GBK | UTF-8<--> Упрощенный китайский язык |
TIS-620 | UTF-8 <--> Кодировка EBCDIC (Таиланд) |
Прочие перекодировщики работают на более низком уровне и используются обычными перекодировщиками и перекодировщиками сетевого обмена. К ним иногда обращаются некоторые перекодировщики для сетевого обмена. Использовать эти перекодировщики не рекомендуется, так как они предназначены для поддержки других перекодировщиков.
Приведенный ниже список содержит
описания прочих перекодировщиков из каталогов
/usr/lib/nls/loc/iconv и
/usr/lib/nls/loc/iconvTable:
Глава 16, Поддержка национальных языков, Список функций поддержки национальных языков.
Раздел Кодовые наборы - Обзор в руководстве AIX 5L Version 5.1 Kernel Extensions and Device Support Programming Concepts.
Команды iconv, uuencode и uudecode.
Функции iconv_open, iconv, iconv_close.