WriteFile русские символы
От: FRT876  
Дата: 28.06.13 14:56
Оценка: -1 :))
Пытаюсь записать текст с помощью WriteFile. Латинские символы записываются, а вот русские с иероглифами.

_bstr_t Path = "D:\\S";

static HANDLE hFile;
DWORD dwWritten;
setlocale(LC_ALL,".1251");
wstring ТекстВыгрузки = (wstring)ТекстЗапроса;
hFile  = CreateFile(Path + "\\Text1.txt", GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
WriteFile(hFile, ТекстВыгрузки, ТекстВыгрузки.Lenght(), &dwWritten, NULL );
CloseHandle(hFile);



28.06.13 23:23: Перенесено модератором из 'C/C++' — Кодт
Re: WriteFile русские символы
От: x64 Россия  
Дата: 30.06.13 06:03
Оценка:
FRT>Латинские символы записываются, а вот русские с иероглифами.

Ну и при чём здесь WriteFile()?
Она вообще-то кодировку не трогает никак.
Смотри, что у тебя в ТекстЗапроса, откуда приходит, etc.
Re: WriteFile русские символы
От: jyuyjiyuijyu  
Дата: 30.06.13 06:49
Оценка: 1 (1) :))
русские имена переменных ломают моё представление о прекрасном ))
Re: WriteFile русские символы
От: neokoder  
Дата: 30.06.13 19:42
Оценка: -1
FRT>Пытаюсь записать текст с помощью WriteFile. Латинские символы записываются, а вот русские с иероглифами.
FRT>_bstr_t Path = "D:\\S";

FRT>static HANDLE hFile;

FRT>DWORD dwWritten;
FRT>setlocale(LC_ALL,".1251");
FRT>wstring ТекстВыгрузки = (wstring)ТекстЗапроса;
FRT>hFile = CreateFile(Path + "\\Text1.txt", GENERIC_READ | GENERIC_WRITE,
FRT>0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
FRT>WriteFile(hFile, ТекстВыгрузки, ТекстВыгрузки.Lenght(), &dwWritten, NULL );
FRT>CloseHandle(hFile);

Офигеть! Вот это код! Ну да ладно.
Ты же записываешь фактически только половину юникодовой строки. length() кол-во символов а WriteFile оперирует байтами.
locale вообще никак не влияет.
И определись самое главное в какой кодировке тебе нужно выводить текст в файл: юникодовй или win-1251.
Re[2]: WriteFile русские символы
От: Abyx Россия  
Дата: 12.07.13 14:17
Оценка: -1
Здравствуйте, neokoder, Вы писали:

N>И определись самое главное в какой кодировке тебе нужно выводить текст в файл: юникодовй или win-1251.

win-1251 это тоже "юникодовая" кодировка.
In Zen We Trust
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.