c++压缩库——Zip Utils压缩后的文件名乱码问题

问题:我想写一个小工具,能够压缩和算哈希,目前已经写完了。然后我进行测试时发现,压缩条目(entry)里面的文件中文名是乱码

排错过程:
1.首先,我认为是Zip Utils造成的,于是我就单步跟踪进了Zip Utils的源码,然后我发现了这么一个情况
c++压缩库——Zip Utils压缩后的文件名乱码问题
这段彩色代码的意思就是说,当前环境使用unicode编码,把给我的字符串都转换成utf8,这本来没有什么错,但是不管我试了多少遍,压缩后的条目文件名的都是乱码。
2.所以,我试着换了一条路:windows默认的编码是utf8吗?
于是,我在网上查了“如何查看windows 中文 默认编码方式”,然后又两个收获:一是使用chcp命令可以查看windows默认的编码方式。二是网上直接说了,winxp和win7的中文版的默认编码方式是gbk。
于是,试着做了如下更改(把CP_UTF8改成了936),于是,就成功了
c++压缩库——Zip Utils压缩后的文件名乱码问题

c++压缩库——Zip Utils压缩后的文件名乱码问题

 
 
 
你问我为什么要用936?
因为936就是windows编码页的GBK的代号。还有其他的代号我给出一个连接,供大家参考吧。
https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers
这是msdn的文档,里面就是默认编码的标识符。默认编码方式又叫码页、内码,至于更多的知识请自行百度。很简单,一点也不难,就是知识点太杂,平时涉及得少,所以看起来很难。

猜你喜欢

转载自blog.51cto.com/12368263/2607703
今日推荐