命令行编解码工具coder.exe 2.0
对写的字符串处理函数进行了封装,提供以下功能:1.编码转换
2.文件编码查看
3.URL编解码
4.base64编解码
5.md5,sha1,crc32计算
6.进制编解码 [2-36]进制,支持[文件|字符串|数字]
以上功能均支持处理字符串和文件,可能会增加新功能
1.10添加功能,查看文件编码
1.11添加功能,支持管道
2.1修复对大文件进行编码转换时数据丢失问题
2.1添加功能:获取文件和字符串MD5值
10.13支持以下编码任意互转,智能转换 [ ANSI | UTF-8 | UTF-8_BOM | UTF-16_BE | UTF-16_LE ]
10.20加入SHA1和CRC32值
2022.1.26 添加功能,数据进制编解码(2进制,10进制,16进制)
2022.11.17 进制工具扩展到 [2-36],'0'-'Z'
2022.2.22 URL编码支持选择全编码(eca)和仅编码非ansi字符(ec)
使用方法:[code]
编码解码工具 2.0.1 (Written By went.)
coder.exe 用法:
显示帮助 /?
转换工具 -c <auto|cp1> <cp2> -<s|f> [ ... ]
-convert <auto|cp1> <cp2> -<string|file> [ ... ]
查看编码 -s -a <gc|gh> -<s|f> [ ... ]
-show -action <getcoder|gethash> -<string|file> [ ... ]
进制工具 -r <2...36> <dc|ec> -<s|f|n> [ ... ]
-radix <2...36> <decode|encode> -<string|file|num> [ ... ]
url工具 -u -a <dc|ec|eca> -<s|f> [ ... ]
-url -action <decode|encode> -<string|file> [ ... ]
base64工具 -bs64 -a <dc|ec> -<s|f> [ ... ]
-base64 -action <decode|encode> -<string|file> [ ... ]
备注:
1. [ ... ] 可选值 [<字符串|文件路径>|管道]
2. cp1,cp2 可选值 参见例子1
3. 大多数情况下,unicode编码即UTF-16_LE编码
例子:
coder -s -a gc -f "0.txt"
查看文件编码 [ ANSI | UTF-8 | UTF-8_BOM | UTF-16_BE | UTF-16_LE ]
coder -s -a gh -f "coder.exe"
获取文件哈希值(MD5,SHA1,CRC32)
coder -c ansi utf-8 -s "你好,世界!"
字符串编码转换 ansi -> utf8 [浣犲ソ,涓栫晫!]
coder -c utf-8 ansi -f "utf8.txt"
文件编码转换 utf8 -> ansi
要生成文件请使用重定向符号 ">" ,参见16进制编解码的例子
coder -c auto ansi -f "1.txt"
文件编码转换,源编码自动识别 -> ansi
coder -r 16 ec -n 36:51uoct
36进制数字转16进制 51uoct -> 1234abcd
coder -r 10 ec -n 16:1234abcd
16进制数字转10进制 1234abcd -> 305441741
coder -r 2 ec -n 305441741
10进制数字转2进制 305441741 -> 10010001101001010101111001101
coder -r 16 ec -f "1.exe">"0.hex"
文件16进制编码
coder -r 16 dc -f "0.hex">"1.exe"
文件16进制解码
coder -u -a dc -s "%73%64%2F%E4%BD%A0%E5%A5%BD%21%2F%31%32%33"
字符串URL解码 [sd/你好!/123]
coder -bs64 -a ec -f "3.png" >"base64.txt"
文件base64编码,保存到base64.txt
coder -bs64 -a dc -f "base64.txt" >"4.png"
文件base64解码,生成4.png
使用管道输入,例子:
for %i in (*.png) do ( echo %i| coder -bs64 -a ec -f >"%i.txt" )
对当前路径下所有png文件base64进行编码,生成txt
[/code]exe和源代码[attach]13066[/attach] [i=s] 本帖最后由 went 于 2021-2-1 16:08 编辑 [/i]
核心代码见附件 [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=234759&ptid=57518]1#[/url] [i]went[/i] [/b]
用汇编写的,太厉害了啊。 [i=s] 本帖最后由 went 于 2021-9-13 23:30 编辑 [/i]
[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=234817&ptid=57518]4#[/url] [i]went[/i] [/b]
当文件字节全是0-127范围内即每个最高位全是0时,文件ansi和utf8编码字节数据完全相同
为了方便其它程序处理,coder.exe把编码看成ANSI,和notepad显示有所不同 不错,学习一下 辛苦楼主了。 感觉动作输入太长了 不能直接-b -a -e 啥的 并且一个base64 得输入.\coder.exe -base64 -action encoder -string 这么长。。就是有点麻烦
不过还是给楼主点赞了 [i=s] 本帖最后由 went 于 2021-6-18 22:30 编辑 [/i]
[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=240270&ptid=57518]6#[/url] [i]zeng_xingdong[/i] [/b]
谢谢建议,1楼已修改为支持单字母选项,简化参数输入操作 [i=s] 本帖最后由 newswan 于 2021-6-18 20:11 编辑 [/i]
-show -action getcoder
把 -action 去掉,直接 -getcoder
比较好些 [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=240272&ptid=57518]8#[/url] [i]newswan[/i] [/b]
主要是凑齐5个参数,省去一些校验参数的麻烦,我看看好不好改吧 [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=240273&ptid=57518]9#[/url] [i]went[/i] [/b]
转换工具 -convert <cp1> <cp2> -<string|file> [<str|filePath>|管道]
查看编码 -show -action <getcoder|getmd5> -<file|string> [<str|filePath>|管道]
url工具 -url -action <decoder|encoder> -<string|file> [<str|filePath>|管道]
base64工具 -base64 -action <decoder|encoder> -<string|file> [<str|filePath>|管道]
如果为了参数整齐 <cp1> <cp2> 合一 cp1-cp2 cp1_cp2 麻烦吗 [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=240274&ptid=57518]10#[/url] [i]newswan[/i] [/b]
cp1和cp2是转换前后的代码页,两个参数,不能写成一个 [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=240275&ptid=57518]11#[/url] [i]went[/i] [/b]
cp1 cp2 合一个参数,在程序内分成2个
cp1 支持 any 或者 空参数 ,程序检测编码,并转换成cp2 [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=240276&ptid=57518]12#[/url] [i]newswan[/i] [/b]
可以先getcoder再根据输出进行convert,就不再重写了 [b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=234759&ptid=57518]1#[/url] [i]went[/i] [/b]
[size=4]感谢楼主无私分享!!
如果,能实现“自动转码”功能,真的不失为一个很好的批处理工具!!!
[b]为什么要说“自动转码”呢?[/b]
主要是现如今的系统线已经很长很乱了:32位、64位、甚至在一些环境中WIN XP都还在使用,WIN7和WIN10的过渡拉锯战仍然有很长的路。
所以,文件的编码问题也较为混乱了,往往根本[b]无法预知[/b]某系统使用的哪种文件编码?也[b]无法预知[/b]会生成什么样的文件编码?
但是,我最终想要的文件编码类型应该预知的。
所以,对源文件的编码格式,最好[b]在内部进行自动判断[/b],不需要我去确定,我只需要指定转换输出文件的编码格式即可!!
如:对一个未知编码的格式文件xyz.txt处理——
转ANSI
coder -c xyz.txt ANSI abc.txt
转UTF-8
coder -c xyz.txt UTF-8 abc.txt
转UTF-16_BE
coder -c xyz.txt UTF-16_BE abc.txt
[b]如此,在批处理中的应用就方便灵活多了!![/b][/size] [i=s] 本帖最后由 locoman 于 2021-9-14 18:52 编辑 [/i]
[quote]回复 locoman
14楼是不是你需要的
[size=2][color=#999999]went 发表于 2021-9-14 14:06[/color] [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=245056&ptid=57518][img]http://bbs.bathome.net/images/common/back.gif[/img][/url][/size][/quote]
[b]基本上是那个意思![/b]
coder -c -1 0 -f utf8.txt>ansi.txt
添加了cp1自动检测编码的参数(-1),仅对utf8和ansi文件有效
[b]但是,对14楼的仍有改进的必须:[/b]
1. 既然是自动编码检测了,就应该全面自动检测,不能仅仅只有两种,这样别人是不好判断的!
2. [b]其实,Unicode to ANSI 的需求更多[/b],主要是当前32位与64位混用的时代,很多32位的只能使用 ANSI ,就更需要Unicode 与 ANSI 的互转。
3. 单看14楼的格式,不知道您是否采取的是用特定文件名来作判断的?这样至少不能自定义文件名了!还是能让别人自定义文件名才好,如下:
coder -c -1 0 -f xyz.txt ANSI abc.txt
coder -c -1 0 -f xyz.txt UTF-8 abc.txt
coder -c -1 0 -f xyz.txt UTF-16_BE abc.txt
coder -c -1 0 -f xyz.txt Unicode abc.txt
[size=4][b][color=Red]祝您完美成功!![/color][/b][/size] [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=245066&ptid=57518]17#[/url] [i]locoman[/i] [/b]
编码判断内部还是和 -show -action getcoder选项一样的判断方法,和文件名无关系
ansi和unicode转换更简单了,现实中我倒是很少遇到unicode文件 [i=s] 本帖最后由 went 于 2021-9-15 12:07 编辑 [/i]
[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=245066&ptid=57518]17#[/url] [i]locoman[/i] [/b]
我没找到unicode文件,能否上传一份?
我转换出来的都乱码了.... [quote]回复 locoman
我没找到unicode文件,能否上传一份?
我转换出来的都乱码了....
[size=2][color=#999999]went 发表于 2021-9-15 12:05[/color] [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=245091&ptid=57518][img]http://bbs.bathome.net/images/common/back.gif[/img][/url][/size][/quote]
传不上啊!仅仅4K还是传不上来。 已加入unicode编码, 代码页使用1200 [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=246648&ptid=57518]21#[/url] [i]went[/i] [/b]
为啥不用C语言, 汇编费时又费力. [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=246655&ptid=57518]22#[/url] [i]slimay[/i] [/b]
确实汇编比不上c,只是个人觉得汇编比较自由没有约束 请问:新版在哪里?
下载顶楼的测试使用不行啊! [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=246676&ptid=57518]24#[/url] [i]locoman[/i] [/b]
unicode分大小端模式,我是inter CPU,小端数据存储,所以我电脑上unicode即utf16-le,现在也只能处理小端数据 [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=246676&ptid=57518]24#[/url] [i]locoman[/i] [/b]
或者你贴个你电脑上unicode文件的网盘链接,我有时间再看下 [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=246676&ptid=57518]24#[/url] [i]locoman[/i] [/b]
1.花时间把核心代码和exe源码重构了一遍,现支持以下几种编码任意互转,智能识别源编码
[ ANSI | UTF-8 | UTF-8_BOM | UTF-16_BE | UTF-16_LE ]
2.我在虚拟机win7上看到记事本有unicode选项,其实就是utf-16_le编码 [i=s] 本帖最后由 locoman 于 2021-10-13 16:04 编辑 [/i]
[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=234759&ptid=57518]1#[/url] [i]went[/i] [/b]
测试您V2.0版本测试情况:
一、文件编码查看测试——
coder -s -a gc -f "0.txt"
查看文件编码 [ ANSI | UTF-8 | UTF-8_BOM | UTF-16_BE | UTF-16_LE ]
ANSI文件返回的是:ANSI
Unicode文件返回的是:UTF-16_LE, [b](最好还是直接返回为Unicode!!)[/b]
二、自动转码测试——
1. 对这个[b]使用格式有点疑惑[/b](不知转换结果文件怎么写?例子说明是这样的: coder -c -1 ansi -f "1.txt"):
我只好这样写: coder -c -1 ansi -f "1.txt" >“2.txt”
2. [b]自动转码结果文件内容丢失[/b](最后几行的内容没有了,并有乱码了)
我发了一个Unicode[b]文本文件供您测试[/b],Unicode文件名:ssv_Unicode.txt,下载地址如下:
[url=https://cnyunfei.lanzouw.com/iMydYvaklda]https://cnyunfei.lanzouw.com/iMydYvaklda[/url] [i=s] 本帖最后由 went 于 2021-10-13 20:54 编辑 [/i]
[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=246757&ptid=57518]28#[/url] [i]locoman[/i] [/b]
感谢测试,已修复内容丢失bug
对于unicode显示问题由于不同cpu大小端不一样,暂时不准备处理,参照win10记事本中的编码显示方式
文件编码转换,请使用'>'重定向到新文件进行保存,参照base64解码的例子 [i=s] 本帖最后由 locoman 于 2021-10-14 14:49 编辑 [/i]
[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=246774&ptid=57518]29#[/url] [i]went[/i] [/b]
[size=5] 最新这个修复有问题哟——
1. 没有帮助信息了——执行后,原先是自动出现使用例子的,现在没有了!!!!!!
2. 查看编码格式coder -s -a gc -f "ssv.txt" ,也没有返回显示值了!!!!!!!
3. coder -c -1 ansi -f转码输出也是空的!!!!!!![/size] [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=246811&ptid=57518]30#[/url] [i]locoman[/i] [/b]
忘了测试win7兼容性,现已修复,顺便把-1参数改成了auto 这测试正常了。
目前,就是360见不得它,老杀它!