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

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

Ответить
Аватара пользователя
TocSYK
Продвинутый
Сообщения: 382
Зарегистрирован: Сб окт 30, 2004 14:14
Откуда: Êèøèíãòîí ñèòè
Контактная информация:

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

Сообщение TocSYK »

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

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

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

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

Ñòàëêèâàëñÿ êòî-òî ñ òàêîé çàäà÷åé, è êàê å¸ ðåøèë? Ïîìîãèòå ïîæàëóñòà è çàðàíåå ñïàñèáî.
Аватара пользователя
keisik
Юзер
Сообщения: 197
Зарегистрирован: Вс фев 26, 2006 23:29

Сообщение keisik »

В файл пишется поток байт, и системе IO абсолютно пофигу, что там за данные и в каком они формате, поэтому переводить их в UTF-8 нужно руками (MultiByteToWideChar).
А wfopen отличается от fopen только тем, что название файла передаётся wide-char-ами.
Аватара пользователя
TocSYK
Продвинутый
Сообщения: 382
Зарегистрирован: Сб окт 30, 2004 14:14
Откуда: Êèøèíãòîí ñèòè
Контактная информация:

Сообщение TocSYK »

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 òåìû... èíåò ãëþêàíóë...äóìàë íå ñîçäàëàñü òåìà....
Ответить

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