Good good study, day day up

aleung的学习笔记, aleung的idea

Doxygen不能支持中文文件名/路径:(

Doxygen是一个很不错的文档生成程序,类似于JavaDoc的功能,但是能支持C++/C/Java和其他的好些语言。今天在使用的时候,发现doxygen不能处理带有中文的文件名或者路径,就把源代码下载回来,看看是什么问题。

问题很容易定位出来,又是unicode和字符集转换的问题,字符集真是让人头痛的东西:(。当在windows平台上运行时,它使用了WideCharToMultiByte来转换字符集,但没有判断当前locale,只是用了CP_ACP(ANSI)code page,故此对于中文就转换成为乱码了(其他multi-byte字符集也会有问题)。

本来想改的,发现doxygen底层用的都是QT的代码,什么QString, QCString,完全是自己独立的一套东西,好些地方似乎都没有考虑mbs字符集的问题,实在跟不下去了,也不知道它的国际化是怎么做的,KDE也是基于QT函数库的呀,也许是windows版本的问题?放弃,给doxygen作者写了个bug report,看看他会不会去修改吧。

ps.

忍不住又再看了一下代码:不从根本上解决问题,只做个临时解决方案,把code page写死为936(简体中文),该可以吧?谁知还是不行:( 再跟踪一下,发现这个程序一点都不i18n friendly,虽然内部使用unicode,但是输入/输出转换都只是按照ascii/Latin1编码来做转换,在英文环境下就正常,一旦使用了非拉丁字符集就出问题了。这样用unicode跟不用有什么区别啊?!