UniCue 1.4 – 一个编码转换工具
名字来由: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.4。
程序下载地址:
https://kuyur.github.io/unicue/Unicue_1.4.zip
bug反馈或特性提出可直接在blog回复或前往https://github.com/kuyur/unicue/issues
Unicue Traveller使用注意事项:
- 自动检测得到的编码还不能更改,因此有可能会使用错误的编码进行转换
- 因此不建议覆盖而不备份
- 目前手动更改选中状态还是会被无视
- 卸载Unicue Traveller扩展菜单后,需要杀掉explorer.exe进程并重新启动explorer (或者简单地,重启系统) 才能移动或删除TravellerExt.dll文件
Unicue Traveller使用里・注意事项:
- Vista以上系统请留意权限问题
- ShellExecute中的参数长度有2048个字符的限制,因此一次选中太多的文件夹/文件会使得参数过长从而导致启动Traveller.exe失败
- Windows7以上系统有对选中文件夹/文件的数量限制,最多只会返回16个给扩展菜单
- 由于DragQueryFile的超低效率,xp系统在启动【选中大量文件夹/文件的】右键菜单时会卡住
- 因此不推荐一次选中太多的文件夹/文件
- 这种情况下可以选择在空白处点击右键
更新日志:
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提取
动态加载字符映射表的字符转换环境方案
十分感谢
真的太好用, 2021還在用, 應該要發揚光大
膜拜啊膜拜,太牛XX了……
我要了,感谢哇!!
您好 打擾了 不好意思 請問 有關 ANSI2Unicode 1.0.3a 問題
我點程式 但都出錯 沒法正常開啟 請問原因出那裡 還是我缺少什麼
[img]http://s11.postimage.org/qqp5v4rld/tesed.jpg[/img]
1.0.3a需要MFC8.0以及VC2005的运行库,1.1需要MFC10.0及VC2010的运行库。1.0.3a是alpha版,建议使用1.0.3正式版,在工程托管页可以下到
剛試一下 正式版也打不開 還是 那裡有可以裝需要的軟件才能 執行ANSI2Unicode
我沒找到線索
可以了 我去找到了 謝謝 不好意思 頭次遇到這情況
切换到转换字符串模式,拖放文件
cue的乱码似乎没问题了,不知道文件名乱码有没有办法解决?