Board logo

标题: [格式转换] concmd - 编码转换工具 [打印本页]

作者: tmplinshi    时间: 2011-5-31 22:39     标题: concmd - 编码转换工具

http://pan.baidu.com/share/link?shareid=4098732524&uk=1124163200
ConCmd 1.5  (Freeware for non-commercial use)             11/19/2002


这是 ConvertZ 的 Console 版本,ConvertZ 虽然内建了 Command Line 的支援,但因为它本身是 GUI 程式,在 Command Line 执行时效率会稍差,所以我另外做了这个版本。

1.5 版新增 /cu 参数,作为转换统一码数字记法之用。
另外,/f 参数的用法有改(参看下面语法一栏)。


用途:
档案中文内码转换 (Unicode Big Endian, Unicode Little Endian, UTF-8, GBK, Big5)

系统需求:
- Win9x/ME/NT/2000/XP
- Windows 系统必须同时己安装繁体及简体的支援(Win2000 及 XP 系统只须在"控制台/国别设定" 加入上述支援,Win9x/ME 系统如果无安装上述支援的话可以到 Windows Update 下载)。


安装:
将所有档案解压到一个新的资料夹,资料夹下必须包含下列四个档案:
- Concmd.exe (主程式)
- Concmd.ini (设定档)
- b5fix.dat (繁体文字修正列表)
- gbfix.dat (简体文字修正列表)

* Concmd 初次执行后会自动产生 6 个唯读的索引档,分别是:
  gb_1.ndx, gb_2.ndx, b5_1.ndx, b5_2.ndx, key1.ndx, key2.ndx



语法: ConCmd [CodeIn] <CodeOut> [Face] <FileIn> [FileOut]

[CodeIn] (输入编码)

  参数        输入的编码方法
 ------------------
  /i:ule        Unicode Little Endian
  /i:ube        Unicode Big Endian
  /i:utf8        UTF-8
  /i:gbk        GBK
  /i:big5        Big5

  *在省略这参数的情况下,程式会自动侦测来源档案的编码。若果来源档案
   是 GBK 或 Big5 码,建议当档案里面有多于100个中文字时才用这功能,
   否则程式可能会错误判断编码。
  
<CodeOut> (输出编码)

  参数        输出的编码方法
 ------------------
  /o:ule        Unicode Little Endian
  /o:ube        Unicode Big Endian
  /o:utf8        UTF-8
  /o:gbk        GBK
  /o:big5        Big5

[Face] (输出字体。可以省略)

  参数        输出的字形
 ------------------
  /f:t        繁体字形 (Traditional)
  /f:s        简体字形 (Simplified)
   /f:d        直接转换不做词汇修正,输出字形尽量依足原本字形。

    输出编码        在缺乏 /f 参数时的假设值
 --------------------
  Big5        /f:t
  GBK                /f:s
  其它        /f:d

 * 若果输出编码是 Big5  /f:s 参数无效

[Fix_UNN] (将统一码数字记法&#xxxxx;转成纯文字)

  参数        是否转换统一码数字记法
 -------------------
  /cu                  转换
  省缺          不转换

[Quiet] (显示萤幕讯息。可以省略,预设值是否)

  参数        是否显示萤幕讯息
 ---------------
  /q                  不显示
  省缺          显示

<FileIn>  (输入档案的路径+名称,支援通配符)

[FileOut] (输出档案的路径+名称,支援通配符,可省略)

* 在 FileOut 省略的情况下,转码结果会覆写 FileIn

* 若档案名包含空白格,须要在档名的前后两端加入双引号 (")


例体:

1) concmd /i:big5 /o:ule /f:s test1.txt test2.txt
   上述指令会将 test.txt 的内容由 Big5 转为简体中文的 Unicode-LE 编码
   并将结果储存到 test2.txt。

2) concmd /i:utf8 /o:big5 *.*
   上述指令将当前目录的所有档案由 utf-8 转做 big5 码,输出结果会覆写
   原来的档案。

3) concmd /o:ule /f:t k*.txt "D:\Temp Dir\*.abc"
   上述指令会搜寻当前目录内所有档名首个字母是 k 及搌展名是 txt 的档案,
   自动侦测它们的原来编码,然后逐一转换成为繁体 Unicode-LE, 并另存到
   'D:\Temp Dir' 目录,新档案名称跟原来档案相同但搌展名会改做 abc。



*** ConCmd.ini ***

使用者可以用文字编辑器去修改 ConCmd.ini 的设定

机码                用途
-----------------------
Ignore                忽略的档案类型(不准许转换),各类型用通配符表示及用逗号分隔

HtmlType        HTML 档案类型,用通配符表示及用逗号分隔

FixHtmlCharset        指定当转换 Html 档案时是否同时修正 Meta tag 内的编码数值,0=否,1=是

AddBOMtoUTF8        当输出是 UTF-8 时指定是否加 BOM (识别码)到档案的前端,0=否,1=是

* Agegbfix 及 Ageb5fix 是 gbfix.dat 及 b5fix.dat 的档案日期,这两个机码的数值只供程式内部使用,若果被修改程式会自动修复。



*** b5fix.dat & gbfix.dat ***

这两个列表跟 ConvertZ 所用的是一样,若果要修改可以用 ConvertZ 内建的编辑器,亦可以用任何纯文字编辑器直接进行修改,只须将新加的字串放在档案结尾便可,格式是将转换前/后的文字放在同一行及用逗号(半形)分隔,程式执行时会自动排序及重建索引档。

修正列表的应用:
修正时程式从文件前端开始读取内容,同时对照修正列表内有没有相同字串(对照时以较长的字串为优先),若果发现便会进行替换及跳到该字串尾后继续搜寻及转换,全篇文章从首至尾只会读取一次。

例子:

在词库内有:
AB,MM
ABC,NNN
CD,OO
DE,PP
FG,QQ

内文是: ABCDACDEFGABADE
转换后是:NNNDAOOEQQMMAPP

注意第一个出现的 AB 因为 ABC 的出现并无转为 MM,而第一个出现的 CD 亦因为被 ABC 中断而无转为 OO,同样道理,第一个出现的 DE 亦无转为 PP。利用这规律技巧地添加新字串到“词汇修正”的词库便可有效地提高准确率。

下面是一些簡體轉繁體的範例:

<范例1>

列表中只有:明了,明瞭

修正前:已經天明了。眾人明了他的處境。

修正后:已經天明瞭。眾人明瞭他的處境。 <-- 第一個「明了」轉錯了
        ︿錯

若列表中加入:天明,天明 (用“天明了,天明了”代替亦可,結果相同。)

转换后:已經天明了。眾人明瞭他的處境。 <--- 全部正确

<范例2>

列表中只有:十裡,十里
      裡余,里餘

修正前:這裡余下三人。他們行了裡余路。離目的地還有十裡余。

修正后:這里餘下三人。他們行了里餘路。離目的地還有十里余。
     ︿︿                    ︿

第一个“裡余”转错了,第三个“裡余”因为被“十裡”中断了而没有被转换。

若在列表中再加入:裡余下,裡餘下
         十裡余,十里餘

修正后会是:這裡餘下三人。他們行了里餘路。離目的地還有十里餘。 <--- 全部正确


----------------------------------

版本纪录:

ver 1.5
- 新增 /cu 参数,可以转换统一码数字记法(&#xxxxx;)做纯文字。
- 对 /f 参数的用法作一些改。
- 更新对照表及词汇修正列表。

ver 1.4
- 修正 unicode 简繁转换时一些字不能转换的问题

ver 1.3
- 当输入及输出档名相同时可以备份来源档

ver 1.2
- 加入自动侦测来源档编码的功能。
- 修正简体中文转成 Unicode/UTF-8 繁体中文时部份中文字不能转换的问题。
- 当 ConCmd.ini 档案或里面任何机码不存在时自动重新创建。

ver 1.1
- 修正在 Windows NT 下执行时会出现 AV Error 的问题

ver 1.0
- first release

----------------------------------


**声明**
本程式仅供个人免费使用,在未经作者授权下不得将这个转码器合并
到其它软件或作任何商业的用途。
作者概不负责用者因使用本程式而导致该电脑系统之任何故障。
若有任何意见及发现任何程式错误,请致函作者。


======================================================
  作者:李志成
  电邮:[email]csli534@ctimail3.com[/email]
  编址:alf-li.tripod.com
======================================================

作者: Demon    时间: 2011-5-31 22:44

iconv 不更牛逼么
作者: tmplinshi    时间: 2011-5-31 22:59

各有优点:
- concmd 可以直接修改原文件;
- concmd 转换简繁体很方便,iconv 不知道怎么转;
作者: liuzhaoyzz    时间: 2019-6-11 10:30

iconv明显没有concmd牛逼!
非常感谢版主!

作者: gudou    时间: 2023-6-4 03:55

感谢!有些文件中有特殊字符,用iconv转换就失败,这个工具没问题!且支持自检测源文件编码,而iconv好像必须指定正确的源文件编码!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2