C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перекодирование из koi8-r в Windows-1251  (Прочитано 3969 раз)
Stilch
Участник


Сказали спасибо: +4/-0
Offline

Сообщений: 46


« : 30 Июнь 2011, 21:16:55 »

Подскажите пожалуйста, есть ли в С++ Builder встроенные функции перекодировки символов из koi8-r в Windows-1251. Если, да то как она называется, если нет, то возможно, у кого нибудь есть уже написанная функция перекодировки, на вход которой скажем подается кодировка  koi8-r, а на выходе она же, но уже в Windows-1251.
Заранее благодарен
Записан
Leex
Участник


Сказали спасибо: +132/-1
Offline

Сообщений: 577


« Ответ #1 : 30 Июнь 2011, 21:35:46 »

попробуй
http://msdn.microsoft.com/en-us/library/dd319072(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/dd374130(v=vs.85).aspx
Записан
Stilch
Участник


Сказали спасибо: +4/-0
Offline

Сообщений: 46


« Ответ #2 : 30 Июнь 2011, 22:09:30 »

Там как я понал utf8, а мне нужно utf8-r, они вроде отличаются
Записан
Leex
Участник


Сказали спасибо: +132/-1
Offline

Сообщений: 577


« Ответ #3 : 30 Июнь 2011, 22:35:08 »

сначала переводишь свою строку в формате koi8-r с помощью MultiByteToWideChar в юникод, а затем полученную юникодную строку с помощью WideCharToMultiByte переводишь в Windows-1251.
функций прямого преобразования мне не встречалось
Записан
Zor
Глобальный модератор


Сказали спасибо: +158/-30
Offline

Сообщений: 2946


« Ответ #4 : 01 Июль 2011, 11:34:06 »

что то я сомневаюсь что это возможно. MultiByteToWideChar вообще про кои знает?
Записан
Asher
Администратор


Сказали спасибо: +111/-5
Offline

Сообщений: 425


« Ответ #5 : 01 Июль 2011, 12:41:22 »

Привет.
http://ru.wikipedia.org/wiki/Iconv
Записан
Stilch
Участник


Сказали спасибо: +4/-0
Offline

Сообщений: 46


« Ответ #6 : 01 Июль 2011, 17:56:40 »

Скачал: http://gnuwin32.sourceforge.net/downlinks/libiconv-src-zip.php
установилось все нормально, но при использовании в проекте выдет ошибки:
[ILINK32 Error] Error: Unresolved external '_libiconv_open' referenced from C:\USERS\STILCH\DOCUMENTS\RAD STUDIO\PROJECTS\NEWBBCODE\DEBUG\UNIT13.OBJ
[ILINK32 Error] Error: Unresolved external '_libiconv' referenced from C:\USERS\STILCH\DOCUMENTS\RAD STUDIO\PROJECTS\NEWBBCODE\DEBUG\UNIT13.OBJ
[ILINK32 Error] Error: Unresolved external '_libiconv_close' referenced from C:\USERS\STILCH\DOCUMENTS\RAD STUDIO\PROJECTS\NEWBBCODE\DEBUG\UNIT13.OBJ

вот как делаю:
Код:
#include
#include

void koi2win(const char *from, char *to) {
 unsigned int fl, tl;
 iconv_t d;
 fl=tl=strlen(from);
 d=iconv_open("CP1251","KOI8-R");
 iconv(d, &from,&fl,&to,&tl);
 iconv_close(d);
}

void __fastcall TForm13::Button1Click(TObject *Sender)
{
char from[4096];
char to[4096];

strcpy(from,"Строка");
koi2win(from, to);
}

« Последнее редактирование: 01 Июль 2011, 18:51:46 от Stilch » Записан
Leex
Участник


Сказали спасибо: +132/-1
Offline

Сообщений: 577


« Ответ #7 : 01 Июль 2011, 18:42:43 »

Цитировать
что то я сомневаюсь что это возможно. MultiByteToWideChar вообще про кои знает?
поидее должен, там первым параметром идет кодовая страница. для koi8-r она равна 20866. хотя я сам не проверял

Цитировать
установилось все нормально, но при использовании в проекте выдет ошибки:
[ILINK32 Error] Error: Unresolved external '_libiconv_open' referenced from C:\USERS\STILCH\DOCUMENTS\RAD STUDIO\PROJECTS\NEWBBCODE\DEBUG\UNIT13.OBJ
[ILINK32 Error] Error: Unresolved external '_libiconv' referenced from C:\USERS\STILCH\DOCUMENTS\RAD STUDIO\PROJECTS\NEWBBCODE\DEBUG\UNIT13.OBJ
[ILINK32 Error] Error: Unresolved external '_libiconv_close' referenced from C:\USERS\STILCH\DOCUMENTS\RAD STUDIO\PROJECTS\NEWBBCODE\DEBUG\UNIT13.OBJ
нужно прилинковать либы или сказать где лежат сипипишники, в которых лежат реализации этох функций
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1108/-22
Offline

Сообщений: 2127

S0mbre


« Ответ #8 : 03 Июль 2011, 08:13:23 »

Вполне возможно, что эту либу придется конвертировать для использовать Борландовским линковщиком при помощи implib и иже с ним.
Записан
Asher
Администратор


Сказали спасибо: +111/-5
Offline

Сообщений: 425


« Ответ #9 : 04 Июль 2011, 08:21:29 »

Привет.
Если сам собирал, то все должно работать. Полученный lib к проекту подключил?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.171 секунд. Запросов: 19.