标题: [格式转换] 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个。- 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> [Quiet] [Backup] [Face] [Fix_UNN] <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 不顯示
- 省缺 顯示
-
- [Backup] (來源檔備份,可省略)
-
- 參數 是否備份檔案
- ---------------
- /b 是
- 省缺 否
-
- 當輸出檔覆寫來源檔時指定是否將來源檔備份到同名但 file extension 是 .bak 的檔案。
-
-
- <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
-
- ----------------------------------
-
-
- **聲明**
- 本程式僅供個人免費使用,在未經作者授權下不得將這個轉碼器合併
- 到其它軟件或作任何商業的用途。
- 作者概不負責用者因使用本程式而導致該電腦系統之任何故障。
- 若有任何意見及發現任何程式錯誤,請致函作者。
-
-
- ======================================================
- 作者:李志成
- 電郵:csli534@ctimail3.com
- 編址:alf-li.tripod.com
- ======================================================
复制代码
作者: 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 |