Error

C++博客 首页 新随笔 联系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks
现象:
切换到unicode编译以后发现款字符的中文全部无法输出,查询以后是Locale引起的,首先用SetLocal设置程序local发现无效,最后定位到log4cplus配置文件:
log4cplus.appender.complete.Locale=chs
这样设置之后发现尼玛还是不行,继续分析,发现是filename的中文部分被截断了。

然后对log4cplus的代码动手,__FILENAME__改成LOG4CPLUS_TEXT(__FILENAME__),修改一对错误之后发现勉强可以用了,但还是有缺陷,早日自己动手写才是王道,,,
posted on 2014-01-13 09:54 Enic 阅读(1579) 评论(1)  编辑 收藏 引用

评论

# re: 关于log4cplus无法输出中文的随记 2014-04-16 16:44 imagebreaker
log4cplus用的是C++的locale,你得用std::locale::global(std::locale("chs"));
仅仅用_tsetlocale(LC_ALL, _T("chs"));不给力,因为std::locale里有静态变量记录着当前locale,而log4cplus玩的是C++的locale,直接用_tsetlocale虽然设置了C的locale,但没有赋值给std::locale里的静态变量,所以,你懂的。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理