Board logo

标题: [格式转换] win_iconv - 编码转换工具(不依赖额外的 dll 文件) [打印本页]

作者: tmplinshi    时间: 2012-10-30 08:36     标题: win_iconv - 编码转换工具(不依赖额外的 dll 文件)

win_iconv 类似于 GNU LibIconv,但是不需要额外的 dll 文件。

usage: win_iconv.exe [-c] -f from-enc -t to-enc [file]


官网: https://code.google.com/p/win-iconv/

http://bcn.bathome.net/s/tool/index.html?key=win_iconv
作者: Demon    时间: 2012-10-31 21:49

iconv本来就能在Windows下编译,方法见《在Windows下编译iconv》,附上一个我编译好的。

http://pan.baidu.com/share/link?shareid=93292&uk=420005780
作者: tmplinshi    时间: 2012-11-1 08:49

回复 2# Demon


    谢谢分享!我传上来吧。链接: https://pan.baidu.com/s/1DoHVVMxBClPthy8yJJwERQ 提取码: i6vc
作者: yu2n    时间: 2012-11-4 15:10

看参数好像不支持自动识别编码……
作者: yu2n    时间: 2012-11-4 15:13

以前用 ConCmd.exe,自动识别编码,要求准确率高的话,中文字符要大于100个。
  1. ConCmd 1.5  (Freeware for non-commercial use)             11/19/2002
  2. 這是 ConvertZ 的 Console 版本,ConvertZ 雖然內建了 Command Line 的支援,但因為它本身是 GUI 程式,在 Command Line 執行時效率會稍差,所以我另外做了這個版本。
  3. 1.5 版新增 /cu 參數,作為轉換統一碼數字記法之用。
  4. 另外,/f 參數的用法有改(參看下面語法一欄)。
  5. 用途:
  6. 檔案中文內碼轉換 (Unicode Big Endian, Unicode Little Endian, UTF-8, GBK, Big5)
  7. 系統需求:
  8. - Win9x/ME/NT/2000/XP
  9. - Windows 系統必須同時己安裝繁體及簡體的支援(Win2000 及 XP 系統只須在"控制台/國別設定" 加入上述支援,Win9x/ME 系統如果無安裝上述支援的話可以到 Windows Update 下載)。
  10. 安裝:
  11. 將所有檔案解壓到一個新的資料夾,資料夾下必須包含下列四個檔案:
  12. - Concmd.exe (主程式)
  13. - Concmd.ini (設定檔)
  14. - b5fix.dat (繁體文字修正列表)
  15. - gbfix.dat (簡體文字修正列表)
  16. * Concmd 初次執行後會自動產生 6 個唯讀的索引檔,分別是:
  17.   gb_1.ndx, gb_2.ndx, b5_1.ndx, b5_2.ndx, key1.ndx, key2.ndx
  18. 語法: ConCmd [CodeIn] <CodeOut> [Quiet] [Backup] [Face] [Fix_UNN] <FileIn> [FileOut]
  19. [CodeIn] (輸入編碼,可以省略)
  20.   參數 輸入的編碼方法
  21.  ------------------
  22.   /i:ule Unicode Little Endian
  23.   /i:ube Unicode Big Endian
  24.   /i:utf8 UTF-8
  25.   /i:gbk GBK
  26.   /i:big5 Big5
  27.   *在省略這參數的情況下,程式會自動偵測來源檔案的編碼。若果來源檔案
  28.    是 GBK 或 Big5 碼,建議當檔案裡面有多於100個中文字時才用這功能,
  29.    否則程式可能會錯誤判斷編碼。
  30.    
  31.   
  32. <CodeOut> (輸出編碼)
  33.   參數 輸出的編碼方法
  34.  ------------------
  35.   /o:ule Unicode Little Endian
  36.   /o:ube Unicode Big Endian
  37.   /o:utf8 UTF-8
  38.   /o:gbk GBK
  39.   /o:big5 Big5
  40. [Face] (輸出字體。可以省略)
  41.   參數 輸出的字形
  42.  ------------------
  43.   /f:t 繁體字形 (Traditional)
  44.   /f:s 簡體字形 (Simplified)
  45.    /f:d 直接轉換不做詞彙修正,輸出字形盡量依足原本字形。
  46.     輸出編碼 在缺乏 /f 參數時的假設值
  47.  --------------------
  48.   Big5 /f:t
  49.   GBK /f:s
  50.   其它 /f:d
  51.  * 若果輸出編碼是 Big5  /f:s 參數無效
  52. [Fix_UNN] (將統一碼數字記法&#xxxxx;轉成純文字)
  53.   參數 是否轉換統一碼數字記法
  54.  -------------------
  55.   /cu   轉換
  56.   省缺   不轉換
  57. [Quiet] (顯示螢幕訊息。可以省略,預設值是否)
  58.   參數 是否顯示螢幕訊息
  59.  ---------------
  60.   /q   不顯示
  61.   省缺   顯示
  62. [Backup] (來源檔備份,可省略)
  63.   參數 是否備份檔案
  64.  ---------------
  65.   /b   是
  66.   省缺   否
  67.   當輸出檔覆寫來源檔時指定是否將來源檔備份到同名但 file extension 是 .bak 的檔案。  
  68.    
  69. <FileIn>  (輸入檔案的路徑+名稱,支援萬用字元符號)
  70. [FileOut] (輸出檔案的路徑+名稱,支援萬用字元符號,可省略)
  71. * 在 FileOut 省略的情況下,轉碼結果會覆寫 FileIn
  72. * 若檔案名包含空白格,須要在檔名的前後兩端加入雙引號 (")
  73. 例體:
  74. 1) concmd /i:big5 /o:ule /f:s test1.txt test2.txt
  75.    上述指令會將 test.txt 的內容由 Big5 轉為簡體中文的 Unicode-LE 編碼
  76.    並將結果儲存到 test2.txt。
  77. 2) concmd /i:utf8 /o:big5 *.*
  78.    上述指令將當前目錄的所有檔案由 utf-8 轉做 big5 碼,輸出結果會覆寫
  79.    原來的檔案。
  80. 3) concmd /o:ule /f:t k*.txt "D:\Temp Dir\*.abc"
  81.    上述指令會搜尋當前目錄內所有檔名首個字母是 k 及副檔名是 txt 的檔案,
  82.    自動偵測它們的原來編碼,然後逐一轉換成為繁體 Unicode-LE, 並另存到
  83.    'D:\Temp Dir' 目錄,新檔案名稱跟原來檔案相同但副檔名會改做 abc。
  84. *** ConCmd.ini ***
  85. 使用者可以用文字編輯器去修改 ConCmd.ini 的設定
  86. 機碼 用途
  87. -----------------------
  88. Ignore 忽略的檔案類型(不准許轉換),各類型用萬用字元符號表示及用逗號分隔
  89. HtmlType HTML 檔案類型,用萬用字元符號表示及用逗號分隔
  90. FixHtmlCharset 指定當轉換 Html 檔案時是否同時修正 Meta tag 內的編碼數值,0=否,1=是
  91. AddBOMtoUTF8 當輸出是 UTF-8 時指定是否加 BOM (識別碼)到檔案的前端,0=否,1=是
  92. * Agegbfix 及 Ageb5fix 是 gbfix.dat 及 b5fix.dat 的檔案日期,這兩個機碼的數值只供程式內部使用,若果被修改程式會自動修復。
  93. *** b5fix.dat & gbfix.dat ***
  94. 這兩個列表跟 ConvertZ 所用的是一樣,若果要修改可以用 ConvertZ 內建的編輯器,亦可以用任何純文字編輯器直接進行修改,只須將新加的字串放在檔案結尾便可,格式是將轉換前/後的文字放在同一行及用逗號(半形)分隔,程式執行時會自動排序及重建索引檔。
  95. 修正列表的應用:
  96. 修正時程式從文件前端開始讀取內容,同時對照修正列表內有沒有相同字串(對照時以較長的字串為優先),若果發現便會進行替換及跳到該字串尾後繼續搜尋及轉換,全篇文章從首至尾只會讀取一次。
  97. 例子:
  98. 在詞庫內有:
  99. AB,MM
  100. ABC,NNN
  101. CD,OO
  102. DE,PP
  103. FG,QQ
  104. 內文是: ABCDACDEFGABADE
  105. 轉換後是:NNNDAOOEQQMMAPP
  106. 注意第一個出現的 AB 因為 ABC 的出現並無轉為 MM,而第一個出現的 CD 亦因為被 ABC 中斷而無轉為 OO,同樣道理,第一個出現的 DE 亦無轉為 PP。利用這規律技巧地添加新字串到“詞彙修正”的詞庫便可有效地提高準確率。
  107. 下面是一些簡體轉繁體的範例:
  108. <範例1>
  109. 列表中只有:明了,明瞭
  110. 修正前:已經天明了。眾人明了他的處境。
  111. 修正後:已經天明瞭。眾人明瞭他的處境。 <-- 第一個「明了」轉錯了
  112.         ︿錯
  113. 若列表中加入:天明,天明 (用“天明了,天明了”代替亦可,結果相同。)
  114. 轉換後:已經天明了。眾人明瞭他的處境。 <---- 全部正確
  115. <範例2>
  116. 列表中只有:十裡,十里
  117.       裡余,里餘
  118. 原句 :這裡余下三人。他們行了裡余路。離目的地還有十裡余。
  119. 轉換後:這里餘下三人。他們行了里餘路。離目的地還有十里余。
  120.      ︿︿                    ︿
  121. 第一個“裡余”轉錯了,第三個“裡余”因為被“十裡”中斷了而沒有被轉換。
  122. 若在列表中再加入:裡余下,裡餘下
  123.          十裡余,十里餘
  124. 轉換後會是:這裡餘下三人。他們行了里餘路。離目的地還有十里餘。 <--- 全部正確
  125. ----------------------------------
  126. 版本紀錄:
  127. ver 1.5
  128. - 新增 /cu 參數,可以轉換統一碼數字記法(&#xxxxx;)做純文字。
  129. - 對 /f 參數的用法作一些改。
  130. - 更新對照表及詞彙修正列表。
  131. ver 1.4
  132. - 修正 unicode 簡繁轉換時一些字不能轉換的問題
  133. ver 1.3
  134. - 當輸入及輸出檔名相同時可以備份來源檔
  135. ver 1.2
  136. - 加入自動偵測來源檔編碼的功能。
  137. - 修正簡體中文轉成 Unicode/UTF-8 繁體中文時部份中文字不能轉換的問題。
  138. - 當 ConCmd.ini 檔案或裡面任何機碼不存在時自動重新創建。
  139. ver 1.1
  140. - 修正在 Windows NT 下執行時會出現 AV Error 的問題
  141. ver 1.0
  142. - first release
  143. ----------------------------------
  144. **聲明**
  145. 本程式僅供個人免費使用,在未經作者授權下不得將這個轉碼器合併
  146. 到其它軟件或作任何商業的用途。
  147. 作者概不負責用者因使用本程式而導致該電腦系統之任何故障。
  148. 若有任何意見及發現任何程式錯誤,請致函作者。
  149. ======================================================
  150.   作者:李志成
  151.   電郵:csli534@ctimail3.com
  152.   編址:alf-li.tripod.com
  153. ======================================================
复制代码

作者: tmplinshi    时间: 2012-11-4 15:40

看参数好像不支持自动识别编码……
yu2n 发表于 2012-11-4 15:10



是的。win_iconv 和 iconv 都不会自动识别。

与 concmd 主要的不同在于,win_iconv 和 iconv 支持从管道符接收和输出到控制台。这个特性是非常有用的。
作者: Demon    时间: 2012-11-4 15:41

以前用 ConCmd.exe,自动识别编码,要求准确率高的话,中文字符要大于100个。
yu2n 发表于 2012-11-4 15:13


自动识别编码只是传说。




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