UniCue 1.3beta6 – 一个编码转换工具

名字来由:Uni代表Unicode,Cue为cuesheet,意为将各种编码的cue文件转换到unicode编码
本意是写一个foobar2000的插件实现编码的转换,但最后变成一堆杂七杂八程序的集合

项目开源,放在Github上托管
https://github.com/kuyur/unicue

目前包括的程序有:
Unicue(主要的编码转换工具)
Unicue Traveller(批量转换工具)
ChineseConverter(简繁繁简转换程序)
Traveller Ext(将Traveller注册到右键菜单的系统扩展)
ExtractAkaiito(PS2游戏アカイイト游戏脚本提取,不提供二进制程序,需自行编译)

各转换工具使用到的编码转换通用库(c4-lib)以及制作字符映射表的工程地址为
https://github.com/kuyur/c4

Unicue最新版本为1.3 beta6。
程序下载地址:
http://kuyur.github.io/unicue/Unicue_1.3beta6.zip
http://go.kuyur.info/Unicue_1.3beta6.zip

bug反馈或特性提出可直接在blog回复或前往https://github.com/kuyur/unicue/issues

Unicue Traveller使用注意事项:

  • 自动检测得到的编码还不能更改,因此有可能会使用错误的编码进行转换
  • 因此不建议覆盖而不备份
  • 目前手动更改选中状态还是会被无视
  • 卸载Unicue Traveller扩展菜单后,需要杀掉explorer.exe进程并重新启动explorer (或者简单地,重启系统) 才能移动或删除TravellerExt.dll文件

Unicue Traveller使用里・注意事项:

更新日志:

Unicue

1.3

  • 增加拉丁文字母支持(CP1252)
  • 一键转换
  • 可调整界面大小
  • 记忆最后使用的界面大小
  • 修正Linux平台下通过Wine运行时菜单不能正常显示的问题
  • 支持Ctrl+A快捷键

1.2

  • 允许选择输出编码(UTF-8/UTF-8无BOM/UTF-16LE/UTF-16BE)
  • 增强CUE文件的自动修正功能
  • 修正Win7以上版本在某种情况下注册到右键菜单却没有生效的Bug
  • 修正GBK映射表中欧元符号没有正确转换的Bug
  • 使用WTL取代MFC,静态编译解决库依赖问题(传说不需要任何第三方dll)
  • 更换新名字 (ANSI2Unicode -> Unicue)
  • 多语言界面 (简中,繁中,英,日)
    1. 感谢小海对繁体中文界面提出的修改建议/Thanks for 小海’s suggestions about Traditional Chinese GUI
    2. 感谢lemphek对英文界面提出的修改建议/Thanks for lemphek’s suggestions about English GUI
  • 增加西里尔字母支持(CP1251),涵括斯拉夫语族包括俄语,塞尔维亚语,保加利亚语等一大堆乱七八糟的语言
  • Linux平台下通过Wine(1.4.1)能稳定运行(菜单不能正常显示)

1.1

注: 1.1以前版本程序名字为Ansi2Unicode

  • 移除自身的转换函数
  • 使用c4-lib通用字符转换环境
  • 支持用户添加自定义字符映射表并设定转换规则
  • 修正图标

1.0.3

  • 完整的Unicode支持,不必为文档路径中的特殊字符担心
  • 修复Unicode补不完计划造成的丢字问题
    –内建基于UAO 2.50的Big5→Unicode字符映射表
    –Big5→Unicode单向转换,解决没有安装Unicode补完计划的win平台上显示Big5文档时的字符(日文假名/日文汉字/简体汉字)丢失问题
  • 转换结果保存为utf-8编码的文本
  • 自动检测文本编码
  • 支持文件拖放操作及命令行打开文档
  • 自动修正cue中的File行音频文件扩展名
  • 自动修正cue中的File行旧式“The True Audio”标签为“WAVE”
  • 不改变默认打开程序的txt/log/cue右键菜单关联
  • 提取tak/flac/ape的内嵌cue,并自动修正cue中的音频文件名
  • 转换字符串功能
  • 转换字符串模式下,支持拖放乱码文件名进行转换

Unicue Traveller

1.2

  • 基于WTL,无需安装任何运行库
  • 完整的Unicode支持
  • 修复Unicode补不完计划造成的丢字问题
  • 转换结果保存为utf-8编码的文本
  • 自动检测文本编码
  • 自动修正cue中的File行音频文件名
  • 自动修正cue中的File行旧式“The True Audio”标签为“WAVE”
  • 批量修改文本文件
    1. 任意的文件夹和文件组合的右键菜单
    2. 文件夹的空白菜单
  • 可指定文件类型
  • 两种保存方式
    1. 覆盖(备份可选)
    2. 另存为(可指定命名模板)

Chinese Converter

1.3

  • 保存配置
  • 可调整窗口大小并记忆最后使用的窗口尺寸
  • 添加菜单
  • 添加覆盖文件的保存按钮

1.2

  • 支持Unicode LE/BE以及UTF-8格式的文本读取和写入
  • 停止使用MFC,转用WTL并静态编译(传说无需任何第三方dll)
  • 更换图标
  • Linux平台下通过Wine(1.4.1)能稳定运行

1.0

  • 简繁繁简转换
  • 仅支持Unicode(LE)输入和Unicode(LE)保存转换结果
  • 采用维基简繁繁简一对一映射表,如有问题找维基
  • 不支持词组转换

开发Unicue的历史缘由

IE转换Unicode补完计划下创建的Big5文本会造成日文假名字符丢失(所有调用win32 api函数MultiByteToWideChar的转换程序都有此问题,原因是Unicode补完计划动用了Big5的自定义造字区,但并非所有人都会去安装Unicode补完计划,在没有安装Unicode补完计划的win平台的CP950中,这些字符是没有定义的)

于是使用自定义的映射表b2u-little-endian.map及自定义的转换函数,绕过CP950以及MultiByteToWideChar

Ansi2Unicode 1.0.3 简明Readme:

选项说明
选项会从配置文件Config.xml读取,如果配置文件不存在或解析错误,会重新生成配置文件

另存文件的命名模板:填写随意,如果留空,则会覆盖原来的文件

自动修正cue文件中的音频扩展名:勾选会依据cue中的音频文件名(不含扩展名)去查找同目录下的音频档案来自动修正cue文件,同时“替换cue文件FILE行的The True Audio为WAVE”会默认生效(无论此选项是否勾选)

提取音频文档(flac/tak/ape)的内嵌cue:勾选后在打开flac/tak/ape文件会提取内嵌cue,否则会视为文本文件打开

注册右键菜单关联:会写如下注册表项

HKEY_CLASSES_ROOT\.uni
@=”UniCue.UNI”

HKEY_CLASSES_ROOT\UniCue.UNI
@=”UniCue 文件”

HKEY_CLASSES_ROOT\UniCue.UNI\shell
@=”Open”

HKEY_CLASSES_ROOT\UniCue.UNI\shell\Open
@=”使用 UniCue 打开”

‘AppPathName为程序路径,如E:\\Program Files (x86)\\UniCue\\Ansi2Unicode.exe
HKEY_CLASSES_ROOT\UniCue.UNI\shell\Open\command
@=”\”AppPathName\” \”%1\””

HKEY_CLASSES_ROOT\UniCue.UNI\shell\unicue
@=”使用 UniCue 转换编码”

HKEY_CLASSES_ROOT\UniCue.UNI\shell\unicue\command
@=”\”AppPathName\” \”%1\””

HKEY_CLASSES_ROOT\txtfile\shell\unicue
@=”使用 UniCue 转换编码”

HKEY_CLASSES_ROOT\txtfile\shell\unicue\command
@=”\”AppPathName\” \”%1\””

‘程序会查找cue文件的注册表信息,假定cue已经关联到foobar2000.CUE
‘如果cue文件类型的信息不存在,会将cue关联到UniCue.UNI
HKEY_CLASSES_ROOT\foobar2000.CUE\shell\unicue
@=”使用 UniCue 转换编码”

HKEY_CLASSES_ROOT\foobar2000.CUE\shell\unicue\command
@=”\”AppPathName\” \”%1\””

HKEY_CLASSES_ROOT\Applications\notepad.exe\shell\unicue
@=”使用 UniCue 转换编码”

HKEY_CLASSES_ROOT\Applications\notepad.exe\shell\unicue\command
@=”\”AppPathName\” \”%1\””

HKEY_CLASSES_ROOT\Applications\ANSI2Unicode.exe\shell\open\command
@=”\”AppPathName\” \”%1\””

‘AppFolder为程序目录,如E:\\Program Files (x86)\\UniCue
HKEY_CLASSES_ROOT\UniCue.UNI\DefaultIcon
@=”AppFolder\\icons\\file.ico”

简单的说,在cue文件已经被关联到某种程序(例如foobar2000)的情况下,会在cue文件的右键菜单添加“使用 UniCue 转换编码”
如果cue文件默认打开方式还不存在,则默认打开方式会变更为ANSI2Unicode.exe
会在txt/log类型的文件(实际上为记事本notepad.exe的关联文件类型)的右键菜单添加“使用 UniCue 转换编码”的选项

卸载右键菜单:还原为原来的状态

新建utf-8编码的文本文件:会更改如下注册表项

删除HKEY_CLASSES_ROOT\.txt\ShellNew下的 NullFile 键值

写键值:(AppFolder为程序所在目录)
HKEY_CLASSES_ROOT\.txt\ShellNew
“FileName”=”AppFolder\\null.uni”

在新建文本文件时会使用utf-8类型的空白模板,编辑此txt文档时直接ctrl+s即可,无需另存为时选择utf-8

还原为默认的新建文本文档:还原为原始状态

转换文件编码的方法
1.启动程序,拖曳文本文件到程序窗体释放
2.启动程序,从菜单打开
3.在注册右键菜单关联后,从右键菜单选择“使用 UniCue 转换编码”
4.命令行窗口:命令行方式(第三方工具可通过此方法传递参数调用Ansi2Unicode)

E:\Program Files (x86)\UniCue>ansi2unicode “F:\downloads\EAC\[EAC][110126]真理絵
_Works_Best_II「Sing_Up!」(wav+cue)\Sing Up.cue”

转换乱码文本或乱码文件名的方法
切换到“转换字符串”模式,拖曳文件(支持多个文件)到程序窗体释放,或者直接在左边窗体粘贴乱码文本,点击按钮“>>”
(不会自动替换原来的乱码文件名)

使用技巧
在使用ANSI2Unicode打开一次文件之后,可以从右键菜单的“打开方式”快速使用ANSI2Unicode打开

相关博文:

tinyXml输出utf-8文档
一个线性时间复杂度的字符编码转换算法
UTF-8到Unicode的转换以及UTF-8编码的检测
GBK、Shift-JIS、BIG5编码检测算法
アカイイト 游戏脚本文件分析及脚本提取
tinyXml处理UTF-8编码详解——写入和读取
tak的内嵌cue提取
flac的内嵌cue提取
动态加载字符映射表的字符转换环境方案

  1. 风星剑仙
    2012年4月25日 06:44 | #1

    膜拜啊膜拜,太牛XX了……
    我要了,感谢哇!!

  2. 仙澐
    2011年11月12日 04:55 | #2

    您好 打擾了 不好意思 請問 有關 ANSI2Unicode 1.0.3a 問題

    我點程式 但都出錯 沒法正常開啟 請問原因出那裡 還是我缺少什麼

    [img]http://s11.postimage.org/qqp5v4rld/tesed.jpg[/img]

    • 2011年11月12日 21:33 | #3

      1.0.3a需要MFC8.0以及VC2005的运行库,1.1需要MFC10.0及VC2010的运行库。1.0.3a是alpha版,建议使用1.0.3正式版,在工程托管页可以下到

      • 仙澐
        2011年11月12日 22:54 | #4

        剛試一下 正式版也打不開 還是 那裡有可以裝需要的軟件才能 執行ANSI2Unicode

        我沒找到線索

        • 仙澐
          2011年11月12日 23:00 | #5

          可以了 我去找到了 謝謝 不好意思 頭次遇到這情況

  3. 2011年11月8日 19:25 | #6

    kei :

    cue的乱码似乎没问题了,不知道文件名乱码有没有办法解决?

    切换到转换字符串模式,拖放文件

  4. kei
    2011年11月8日 10:31 | #7

    cue的乱码似乎没问题了,不知道文件名乱码有没有办法解决?

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: