Преобразование записей журнала в UniCode - PullRequest
0 голосов
/ 13 июня 2011

Мы используем метод со следующей подписью для регистрации сообщений.

void CLog::WriteLog(char * lpszBuffer,...)

Примеры записей журнала:

pLog->WriteLog("Eneterd %s",  __ FUNCTION__);
pLog->WriteLog("Error Code is %d", GetLastError());

Теперь у нас есть особое требование для включения поддержки юникода в наш код. Какие модификации я должен сделать, чтобы легко внедрить поддержку Unicode? В коде тысячи таких записей журнала?

или Стоит ли оставлять записи журнала как таковые?

Ответы [ 2 ]

2 голосов
/ 13 июня 2011

Укажите формат utf-8 для файла журнала. Хорошие шансы, что вам не придется менять одну строку кода регистрации, значения байтов для любого символа в наборе символов ASCII одинаковы. Вам подойдет любой текст на английском языке, в котором не используются символы ударения.

Это, однако, не в духе просьбы, я думаю. Это побеждает любой механический способ убедиться, что исходный код правильно обрабатывает Unicode. Поговорите со своим руководителем или руководителем проекта.

1 голос
/ 13 июня 2011

Вам необходимо изменить сигнатуру метода, которая поддерживает хотя бы широкие символы. Например,

void CLog :: WriteLog (wchar * lpszBuffer, ...)

Это возможно, когда у вас есть доступ для изменения тела этой функции. Вам нужно будет изменить функции printf с помощью функций, поддерживающих Юникод, т.е. wprintf ()

Если у вас нет доступа к исходному коду этой функции (если вы используете из библиотеки / dll), проверьте, доступны ли другие версии этой функции, поддерживающие юникод. Вы можете попробовать изменить свойства проекта на Использовать библиотеки Unicode, чтобы доступные функции по умолчанию использовались как функции Unicode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...