Êîäèðîâêà UTF-8 â Visual Studio 6.0

Вопросы программирования, чего ж еще :)

Модератор: Злобный

Êîäèðîâêà UTF-8 â Visual Studio 6.0

Сообщение TocSYK » Чт апр 02, 2009 09:59

Ãîñïîäà,êòî-òî ñòàëêèâàëñÿ ñ ïðîáëåìîé çàïèñè äàííûõ â ôàéëèêè ðàçìåðîì ñêàæåì 1500 è ñ êîäèðîâêîé UTF-8 ???

òî ÷òî â ãóãëå íàø¸ë íå ìàãó èñïîëèçîâàòü äà è ïîääåðæèâàåòñÿ ïîçäíèìè âåðñèÿìè VS2005 è.ò.ä.

ïðîáîâàë ñ fopen èëè wfopen .....

[mod="Çëîáíûé"]Äàâàéòå íå áóäåì ïëîäèòü òåìû, çàäàâàÿ îäèí è òîò æå âîïðîñ. Ïåðåíåñ òî, ÷òî íèæå, èç âòîðîé òâîåé òåìû.[/mod]
Ïðîãðàìêà îòêðûâàåò\ñîçäà¸ò (fopen èëè wfopen ) ôàéëèêè è çàïèñûâàåò òóäà îêîëî 1300 êàðàêòåð. Ìíå íóæíî ÷òîá äàííûå çàïèñûâàëèñü êîóä-ïýéäæîì UTF-8.
Âñå ÷òî íàø¸ë â ãóãëå îòíîñèòñÿ ê íîâåéøèì âåðñèÿì VS2005 è.ò.ä. è íå ìàãó èõ èñïîëüçîâàòü....

Ñòàëêèâàëñÿ êòî-òî ñ òàêîé çàäà÷åé, è êàê å¸ ðåøèë? Ïîìîãèòå ïîæàëóñòà è çàðàíåå ñïàñèáî.
Guns don't kill people, people kill people !
Аватара пользователя
TocSYK
Продвинутый
 
Сообщения: 382
Зарегистрирован: Сб окт 30, 2004 14:14
Откуда: Êèøèíãòîí ñèòè

Сообщение keisik » Вс апр 05, 2009 12:18

В файл пишется поток байт, и системе IO абсолютно пофигу, что там за данные и в каком они формате, поэтому переводить их в UTF-8 нужно руками (MultiByteToWideChar).
А wfopen отличается от fopen только тем, что название файла передаётся wide-char-ами.
Вот такое у меня ИМХО.
Аватара пользователя
keisik
Юзер
 
Сообщения: 197
Зарегистрирован: Пн фев 27, 2006 00:29

Сообщение TocSYK » Вт апр 07, 2009 17:20

FILE * file;
int utf16Length = wcslen( string ) + 1;
int utf8Size = WideCharToMultiByte( CP_UTF8, 0, string, utf16Length, NULL, 0, NULL, NULL );

std::vector< char > utf8Buffer( utf8Size );

int result = WideCharToMultiByte( CP_UTF8, 0, string, utf16Length, &utf8Buffer[0], utf8Size, NULL, NULL );

static const BYTE utf8BOM[] = { 0xEF, 0xBB, 0xBF };
if ( _wfopen( &file, L"E:/filme/1.txt", L"wb,ccs=UTF-8" ) == 0 )
{

fwrite(utf8BOM,1,_countof(utf8BOM),file );
OnOK();
result = fwprintf( file, L"%s\n",static_cast<char *>(&utf8Buffer[0])) ;

fclose( file );
}


äà, ââîáøåìòî óáèäèë âîñïîëüçîâàòñÿ ÂÑ2008 , è íàøîë êàê ñîõðàíèòü ôàéëèê íî åñòü äðóãàÿ ïðîáëåìà.
åñëè ó ìåíÿ char[1000] è ïðè êîíâ. â UTF-8 òo array óâåëè÷èâàåòñÿ äî 1390, è ïðè çàïèñè ýòèõ ñàìûõ 1390 êàðàêò. â ôàéëèêå ïîìèìî èõ åñ÷î çàïèñûâàþòñÿ îêîëî 17 ñhar-oâ ....... ââîáøåì â äåáàãå ïðîêîâûðÿþñü ÷òî è îòêóäà ýòîò ìóñîð ïîåâëÿåòñÿ....

P.S. ìîäåðàòîð, åé áîãó íå áûëî íàìåðåíüÿ ñîçäàâàòü 2 òåìû... èíåò ãëþêàíóë...äóìàë íå ñîçäàëàñü òåìà....
Guns don't kill people, people kill people !
Аватара пользователя
TocSYK
Продвинутый
 
Сообщения: 382
Зарегистрирован: Сб окт 30, 2004 14:14
Откуда: Êèøèíãòîí ñèòè


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron