Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.148.124] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
Подскажите пожалуйста, как получить препроцессированный код в читабельной кодировке? 1. исходный файл main.cpp записан в кодировке UTF-8 без bom и содержит комментарии на русском языке. 2. в исходном файле прописывал дерективу: #pragma setlocale(".65001") Препроцессор игнорирует эту инструкцию. Компилятор ругается... Перебирал по всякому, но в итоге src\main.cpp(4) : error C2175: .utf8: недопустимый язык 3. запустил препроцессор командой cl.exe /C /P main.cpp 4. получил препроцессированный файл: main.i 5. В полученном main.i кракозябры! Ну очень сильно похоже, на то как кракозябры выводятся в кодировке UTF-8 В оригинале сохранённом в UTF-8: /* обработчик исключений. */ В результате, открытом опять же в UTF-8: /* обработчик исключений. */ Подбирать ключик, перебирая кодировки... Я потыркал разные варианты результата, но всё чего-то не то и не так. Даже попробовал менять кодировку командной строки: chcp 1251 chcp 65001 У кого-нибудь есть хорошие идеи? Просьба, не предлагать: 1. писать комментарии на английском. 2. сохранять в ином, не unicode формате. 3. юзать другой препроцессор, не ms cl.exe windows 7 64 bit russian. visual studio 2013 russian |
Сообщ.
#2
,
|
|
|
main.i чем открывал?
|
Сообщ.
#3
,
|
|
|
Цитата Kray74 @ main.i чем открывал? akelpad. У него есть автоопределение кодировки, но я и ручками указывал. |
Сообщ.
#4
,
|
|
|
Цитата Eric-S @ Просьба, не предлагать: 1. писать комментарии на английском. 2. сохранять в ином, не unicode формате. 3. юзать другой препроцессор, не ms cl.exe Запускать препроцессор не командой, а командным файлом. В нем предварительная перекодировка в 1251, потом препроцессорная обработка. В итоге исходный файл в юникоде, выход препроцессора в читабельном 1251. |
Сообщ.
#5
,
|
|
|
Цитата JoeUser @ Запускать препроцессор не командой, а командным файлом. Вы это так категорично утверждаете... Мне даже жаль вас обламывать. Запускаю естественно командным файлом. Цитата JoeUser @ В нем предварительная перекодировка в 1251, потом препроцессорная обработка. В итоге исходный файл в юникоде, выход препроцессора в читабельном 1251. Ох... Если бы у меня был один файл! Это же надо скрипт писать, чтоб он обошел и переконвертировал все исходники. Причём, перед запуском препроцессора, старый код спрятал, заменив на новый. А потом удалил перекодированный, вернув на старый. И что ещё хуже, на выходе мне нужен тоже unicode. А всякие однобайтовые, вроде cp1251 наровят, чего-нибудь потерять. Цель в том, чтобы собрать исходный код, реальным препроцессором. А затем обработать его doxygen'ом. Сам doxygen не желает или не может корректно раскрыть все макросы и вдобавок подинклудить файлы. Но, погулявв, подумав, я сел эксперементировать. И достаточно быстро выяснилось, что проще всего, добавить bom. Всё! Больше никаких шаманств не требуется! |