将日志条目转换为UniCode

时间:2011-06-13 10:31:20

标签: c++ visual-c++

我们正在使用带有以下签名的方法来记录消息。

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

示例日志条目

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

现在我们有一个特定的要求在我们的代码中引入unicode支持。我应该做些什么修改来轻松引入Unicode支持?代码有数千个这样的日志条目?

或者我应该保留日志条目吗?

2 个答案:

答案 0 :(得分:2)

为日志文件指定utf-8格式。很有可能您不必更改单行日志记录代码,ASCII字符集中任何字符的字节值都相同。你会对任何不使用重音字符的英文文本都有好处。

然而,我认为这不符合要求的精神。它失败了任何机械方式来验证源代码现在正确处理Unicode。与您的主管或项目经理交谈。

答案 1 :(得分:1)

您需要更改至少支持宽字符的方法签名。例如,

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

当您有权修改该功能的主体时,这是可能的。您必须使用unicode支持的函数更改printf函数,即wprintf()

如果您无法访问该函数的源代码(如果您使用的是库/ dll),请检查该函数的其他版本是否可用,哪些版本具有unicode支持。您可以尝试将项目属性更改为使用Unicode库,以便可用的函数默认为unicode函数(如果可用)。