我们正在使用带有以下签名的方法来记录消息。
void CLog::WriteLog(char * lpszBuffer,...)
示例日志条目
pLog->WriteLog("Eneterd %s", __ FUNCTION__);
pLog->WriteLog("Error Code is %d", GetLastError());
现在我们有一个特定的要求在我们的代码中引入unicode支持。我应该做些什么修改来轻松引入Unicode支持?代码有数千个这样的日志条目?
或者我应该保留日志条目吗?
答案 0 :(得分:2)
为日志文件指定utf-8格式。很有可能您不必更改单行日志记录代码,ASCII字符集中任何字符的字节值都相同。你会对任何不使用重音字符的英文文本都有好处。
然而,我认为这不符合要求的精神。它失败了任何机械方式来验证源代码现在正确处理Unicode。与您的主管或项目经理交谈。
答案 1 :(得分:1)
您需要更改至少支持宽字符的方法签名。例如,
void CLog :: WriteLog(wchar * lpszBuffer,...)
当您有权修改该功能的主体时,这是可能的。您必须使用unicode支持的函数更改printf函数,即wprintf()
如果您无法访问该函数的源代码(如果您使用的是库/ dll),请检查该函数的其他版本是否可用,哪些版本具有unicode支持。您可以尝试将项目属性更改为使用Unicode库,以便可用的函数默认为unicode函数(如果可用)。