Официальный форум СВД Встраиваемые Системы
05 Декабря, 2016, 19:35:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: iconv для QNX4  (Прочитано 11409 раз)
Олег Большаков
Администратор
Житель форума

Сообщений: 2931



WWW
« : 15 Февраля, 2010, 00:56:26 »

Библиотека iconv для QNX4

ICONV -- это 1) библиотека (iconv.lib) для переконвертирования между различными кодировками символов; 2) утилита командной строки (iconv) и 3) набор кодировок.

Синтаксис утилиты iconv достаточно простой:

Код:
iconv -f <исходная кодировка> -t <выходная коировка>

Исходные данные программа берёт из стандартного потока ввода, а выводит в стандартный поток вывода. Для перекодирования файла readme.txt из русской кодировки Windows (cp1251) в русскую кодировку DOS (cp866) можно вызвать утилиту iconv следующим образом:

Код:
$ iconv -f cp1251 -t cp866 < readme.txt > readme_cp866.txt

В дистрибутив для QNX4 входят библиотека с заголовочным файлом, утилита iconv и набор таблиц со стандартными кодировками. Дополнительно включены таблицы с русской кодировкой cp1251, а также с кодировками EBCDIC и IBM-1141 для корректного прохождения тестов libxml2 для QNX4.

Ссылки:

 - Исходные коды для *BSD.
 - Дистрибутив для QNX4: iconv-2.0-qnx4-bin-20100214.tar.gz.
 - Исходные коды для QNX4 будут доступны позже.
Записан

Василий Дмитриев
Опытный пользователь

Сообщений: 293



« Ответ #1 : 15 Февраля, 2010, 15:45:51 »

Очень полезно.   I'm so happy
Записан

Санкции! Запрещаю Бараку Обаме и членам конгресса США читать мои посты!
Олег Большаков
Администратор
Житель форума

Сообщений: 2931



WWW
« Ответ #2 : 22 Февраля, 2010, 01:40:27 »

Хочу поделиться скриптом (под спойлером), который я использую для конвертирования текстовых файлов из одной кодировки в другую. Достаточно сохранить скрипт с именем, например, fromwin и наделать ссылок на этот файл с именами fromkoi, fromutf8, towin и т.д. Не забывает задать правильную системную кодировку (переменная ENC), в QNX это обычно cp866. В слаквари можно делать симлинки, но в QNX надо обязательно делать жёсткие ссылки. И опять-таки, убеждаемся, что пользователь, от имени которого запускается скрипт имеет права на создание временного файла.

После всех этих процедур можно осуществлять перекодировку inplace, т.е. в тот же самый файл, например, так:

Код:
$ fromwin readme.txt

(щёлкните чтобы показать/скрыть)
« Последнее редактирование: 25 Февраля, 2010, 00:23:53 от Олег Большаков » Записан

LH
Опытный пользователь

Сообщений: 251


« Ответ #3 : 25 Марта, 2010, 17:50:57 »

Попробовал сконвертировать из одной кодировки в другую с помощью iconv.lib:

"Вылетает" на функции iconv().

что я делаю не так?

P.S. пустые ntohs() и  ntohl() пришлось дописать, чтобы программа собралась без библиотек TCP/IP, зачем они в iconv?


Цитировать
#include <iconv.h>
#include <stdlib.h>
#include <stdio.h>

main()
{
   iconv_t cd;
   
   char in[]="absdefgh ABCDEFGH";
   char *inptr=in;
   char out[100];
   char *outptr=out;
   size_t insize, outsize;

   cd=iconv_open("cp855", "cp1251" );

   insize=   sizeof(in);
   outsize=100;
   iconv(cd, &inptr, &insize, &outptr, &outsize );
   
   iconv_close(cd);
   

}


void ntohs()
{

}

void ntohl()
{

}
Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 2931



WWW
« Ответ #4 : 25 Марта, 2010, 22:00:55 »

что я делаю не так?

Чтобы программа не падала, Вам нужно описать функции корректно: ntohs возвращает unsigned short, ntohl возвращает unsigned long.

Чтобы программа работала корректно необходимо реализовать в функциях переворачивание слова и двойного слова.

P.S. пустые ntohs() и  ntohl() пришлось дописать, чтобы программа собралась без библиотек TCP/IP, зачем они в iconv?

Исходный код доступен, можете посмотреть на него, чтобы разобраться в этом вопросе. Код доступен под лицензией BSD, а значит Вы можете делать с ними, что угодно.
« Последнее редактирование: 25 Марта, 2010, 22:04:48 от Олег Большаков » Записан

LH
Опытный пользователь

Сообщений: 251


« Ответ #5 : 26 Марта, 2010, 15:48:30 »

Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 03 Декабря, 2016, 00:59:48