解决SlickEdit中版本控制工具的中文问题

admin Post in c语言
1
Windows下的 SlickEdit中,如果用SE内置的Subversion/CVS前端来操作代码库的话会发现所有的中文都被显示为乱码,而英文都正常。造成这个问题的主要原因就是SE在内部处理字符串用的是UTF8编码,而控制台端的svn/cvs工具在通过Shell与SE交互时用的实际上都是多字节码。这样就造成了乱码问题。

解决的方法很简单,只要在调用命令的前后各做一次编码转换即可。找到SE的底层CVS/SVN命令操作函数:cvsutil.e::_CVSPipeProcess()

在入口处把SE准备传递给Shell的命令由UTF8转换为多字节编码,代码页使用系统默认(也可以自己指定一个代码页,在第二个参数指定即可。如强制转换为简体中文:_UTF8ToMultiByte(command, 936)):
command = _UTF8ToMultiByte(command);

这样就可以让SE正确地把包含中文的文件名等参数传递给 CVS/SVN,解决不能checkout中文名文件的问题(表现为操作时返回svn缺少参数之类的错误)。

在这个函数末尾return之前,再做一次逆向转换:
StdOutData = _MultiByteToUTF8(StdOutData);
StdErrData = _MultiByteToUTF8(StdErrData);

这里把完成命令调用后的stdout和stderr由多字节编码转换为UTF8,供SE继续处理。解决SE的VCS图形界面显示中文乱码的问题。

经过上述改进以后,SE内置的Subversion Browser已经可以正常浏览中文目录:
sshot-2
在版本控制的History里也能看到文件的中文注释:
sshot-4
修改好的cvsutil.e已经传到盒子里了。

« Prev: :Next »

One Response to “解决SlickEdit中版本控制工具的中文问题”