不同codepage文件转换操作实录

因有一芬兰语项目,文件以ANSI方式保存,内有注释,有芬兰语。在中文环境下打开,与GBK编码冲突,出现乱码。使用doxygen进行文档化,如果输入的编码采用GBK,则提示错误。因我想用中文对文件进行注释后用doxygen进行文档化,所以需要将芬兰语变化成GBK编码。

在csdn求助,得到不少回复。最终的解决方法记录在案,以备后查。

我尝试了方案如下:
cattycat的方案,因为输出还是有不识别的文字:// Index 0 = Marginaalit pll?pois,其中的?即为不识别的。当然,这是我的经验。所以我没有实际操作。

4楼的回复:
芬兰语是Latin-1编码吧,中文是GBK,这两种编码都是使用0x80~0xFF的扩展ASCII作为码位,有重码,因此无法共存,只能全改UNICODE。现在知道Unicode的那个唯一码的含义了么?

你的乱码显示为汉字的冷僻字,说明芬兰语字母跟GBK汉字编码冲撞了。

你用记事本随便打开一个exe文件,乱码中有大量汉字,不是因为exe文件有汉字,而是恰好撞上了汉字编码。
----
实际操作如下:
用VC2005以Latin-9编码打开,以GBK936存储,在保存的时候,提示有冲突,选择no。结果OK。不过这要人工一个一个文件的搞。搞了一晚上,累死我了。
所以想自己编程。
-------------------
采用7楼的:
你可以写个程序,按照ASCII编码把文件读出来,然后把每个ASCII字符转换为unicode的字符,再保持成unicode文件就好了吧.

用MultiByteToWideChar,先从Latin-9转换成UNICODE,然后用WideCharToMultiByte转换成936。
结果转换后的文字,最后总是多了一截文字。因为太晚了,困,放弃。

-----------------
后看doxygen,用的是iconv库,遂搜索iconv for windows,下载到1.92版本。批处理处理之:

查看了下vcproj文件,发现编码是windows-1252,所以不打算采用latin编码读入了。
批处理文件1,f2gbk.bat
@echo off
echo 将%1从windows-1252编码转换到gbk编码
for %%f in (%1) do copy %%f %%f.1252
for %%f in (%1) do iconv -c -f windows-1252 -t gbk %%f.1252 > %%f

这批处理也是从网上搜索到的。

批处理之二:travel.bat 也是从网上搜索到的。这批处理还真牛。
set path=%path%;"I:/opensource/tools/libiconv-1.9.2-1-bin/bin/"
setlocal EnableDelayedEx
for /f "delims=" %%i in ('dir /b /a-d /s *.cpp *.h') do call f2gbk %%i
endlocal

运行travel .  
万事大吉,doxygen顺利工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值