![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Pilligrim |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
Решил перевести свою программу с ANSI на Unicode. Все хорошо, но вот какая проблемка: пишу в файл вот так:
Все записывается без ошибок, но в файле явно символов больше, чем я записывал: во-первых, перед каждым символом есть какой-то еще один(причем один и тот же) во-вторых, русские символы она записывает неправильно Что делать? Это сообщение отредактировал(а) Pilligrim - 14.3.2007, 21:19 |
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 5 Всего: 95 |
А юникод продефайнен?
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
Pilligrim |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
Да:
|
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
||||
|
||||
Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
Ага, в два раза. WriteFile записывает то что ей дают. Эта функция имеет одну реализацию, нет функций WriteFileA и WriteFileW Если у тебя в программе юникод строки то они и записываются в файл. Если тебе это не нравится нужно перед записью преобразовывать строки в анси. А после чтения преобразовывать обратно. Но тогда теряютяс плюсы юникода. Как вариант - перед записью в файл перекодировать строку в кодировку UTF-8. Это "ужатый юникод", кодировка в которой число байт на символ зависит от самого символа. Если у тебя большинство символов английские это поможет сократить размер файла, но также это не лешает возможности писать в файл китайские, русские или ещекакиенибудьстранные символы. Ну и конечно же надо понимать что такое юникод, прежде чем во всем этом разбираться. В этом может помочь одна из лучших вики-статей http://ru.wikipedia.org/wiki/юникод Это сообщение отредактировал(а) Tectoder - 15.3.2007, 13:04 |
|||
|
||||
Pilligrim |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
Tectoder, оно конечно понятно, но все бы хорошо, если бы я, записывая строки юникод, мог бы потом и считать их. Но это не так... Например русские символы она записывает(а соответственно и считывает потом) не верно. dumb, представление я имею, и то что символов больше я понимаю почему, но вот про русские символы я не понял до сих пор... Читаю вот как:
|
||||
|
|||||
Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
||||
|
||||
Pilligrim |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
Привожу код:
Код прямо из проги вырвал. Если какие-нить переменные не объявлены - спрашивайте. |
|||
|
||||
Pilligrim |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 9.6.2006 Репутация: нет Всего: 1 |
Всем спасибо!
Проблемы оказывается и не было, это все Блокнот виндовский. Он виноват!!! Он юникод каряво понимает как-то... Все ОК))) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |