标题: [其他] 批处理如何实现ascii/中文字符转换unicode码 [打印本页]
作者: aa768228 时间: 2016-7-26 00:27 标题: 批处理如何实现ascii/中文字符转换unicode码
bat批处理汉字ascii转换unicode编码
比如这样
作者: pcl_test 时间: 2016-7-26 03:52
本帖最后由 pcl_test 于 2018-1-24 14:35 编辑
保存为bat文件运行- //&cls&cscript -nologo -e:jscript "%~f0" "批处理之家"&pause&exit
-
- /*
- 用法:
- 一、转换文件
- 1、指定某个文件 //&cls&dir /a-d/b "指定文本.txt"|cscript -nologo -e:jscript "%~f0"&pause&exit
- 2、多个文件 //&cls&dir /a-d/b *.txt|cscript -nologo -e:jscript "%~f0"&pause&exit
- 二、转换字符串
- //&cls&cscript -nologo -e:jscript "%~f0" "需转换的字符串"&pause&exit
- */
-
- var pattern=1; //设置转换模式
-
- /*
- 1为ASCII转Unicode(举->举;),2为Unicode转ASCII(个;->个),
- 3为中文转Unicode(栗->\u6817),4为Unicode转中文(\u5b50->子)
- */
-
- var crlf=0; //是否转换回车换行符,1为是,0为否
-
- if(!/^[1-4]$/.test(pattern) || !/^[01]$/.test(crlf)){WSH.echo('参数有误!');WSH.quit()}
- var fso = new ActiveXObject('Scripting.Filesystemobject');
-
- if(WSH.Arguments.length<1){
- while(!WSH.StdIn.AtEndOfStream){
- try{
- var file = WSH.StdIn.ReadLine();
- var f = fso.OpenTextFile(file, 1);
- var txt = f.ReadAll();
- f.Close();
- var f = file.replace(/(.+\\)?([^\\]+)/, '$1$New_$2');
- fso.CreateTextFile(f, 2).Write(Choice(txt));
- }catch(e){}
- }
- WSH.echo('Done');
- }else WSH.Echo(Choice(WSH.Arguments(0)));
-
- function Choice(txt){
- switch(pattern){
- case 1: return AsciiToUnicode(txt);break;
- case 2: return UnicodeToAscii(txt);break;
- case 3: return HanziToUnicode(txt);break;
- case 4: return UnicodeToHanzi(txt);break;
- }
- }
-
- function AsciiToUnicode(txt){
- var s='';
- for (var i=0; i<txt.length; i++){
- var num=txt.charCodeAt(i);
- if(!crlf && (num==10 ||num==13)){
- s += String.fromCharCode(num);
- }else s += '&#'+num+';';
- }
- return s;
- }
-
- function UnicodeToAscii(txt) {
- return txt.replace(/(&#)(\d+);/gi,function($0){return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\d+)(%3B)/g,"$2")));});
- }
-
- function HanziToUnicode(txt){
- var s='';
- for (var i=0; i<txt.length; i++){
- var num=txt.charCodeAt(i);
- if(!crlf && (num==10 ||num==13)){
- s += String.fromCharCode(num);
- }else s += '\\u' + ('00'+parseInt(num).toString(16)).slice(-4);
- }
- return s;
- }
-
- function UnicodeToHanzi(txt){
- return txt.replace(/(\\u)(\w{1,4})/gi,function($0){return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\w{1,4})/g,"$2")),16)));});
- }
复制代码
作者: aa768228 时间: 2016-7-26 07:45
回复 2# pcl_test
大哥,转换不行,还是原来的字符。
作者: 523066680 时间: 2016-7-26 09:15
回复 3# aa768228
楼主换一种脚本语言,一两句话就能做的事
作者: pcl_test 时间: 2016-7-26 09:38
回复 3# aa768228
直接将代码保存为bat文件运行,“批处理之家”这几字没转换?如果能转换,那就是你操作不对,看代码中的注释修改
作者: aa768228 时间: 2016-7-26 09:41
回复 4# 523066680
换什么?求给个
作者: 523066680 时间: 2016-7-26 11:32 标题: Perl/Ruby/Python 都可以轻松实现
本帖最后由 523066680 于 2016-7-26 11:33 编辑
- use Encode;
- my $src = decode('utf8', "百度站长工具");
- $src =~s /(.)/sprintf("\&\#%d;", ord($1))/ge;
- print $src;
作者: codegay 时间: 2016-7-27 12:14
python3 中用内置函数ord可以返回一个字的unicode值。
用str转为字符串,前面再加&# ,结尾加上;
就可以得到一样的结果。- >>> ord("百")
- 30334
- >>> str(ord("百"))
- '30334'
- >>> ord('百')
- 30334
- >>> '&#' + str(ord('百')) + ';'
- '百'
复制代码
作者: codegay 时间: 2016-7-27 12:24
本帖最后由 codegay 于 2016-7-27 12:27 编辑
python3 一行流- >>> ''.join(map('&#{};'.format,map(str,map(ord,'批睡理之家'))))
复制代码
作者: ai20110304 时间: 2016-8-1 21:53
:victory:
作者: wskwfkbdn 时间: 2016-8-7 22:59
这个人在群里问了,我说给他50元开发个命令行程序,结果啰嗦白天,到最后不说话了,写不写也不说,我就自己琢磨出来了并写了个命令行,然后q这个人,最终还是没有回应,我也就算了,我想说做人要有始有终,不做就不做啦,何必浪费时间跟我啰嗦半天呢!起码回应一声说不弄了不想花钱来论坛问问也行啊,费劲不讨好的事情,以后我保证不干了。表达完毕!
作者: ainibau 时间: 2018-1-23 23:26 标题: ascii/中文批量转换unicode编码的问题
看了这篇帖子,版主的批处理确实可以用。http://www.bathome.net/thread-41155-1-5.html
但是对我来讲有个问题,
这个问题就是我TXT文本里面的文字多是分行的,批量转换后的unicode码是不分行,因为我这个TXT的内容是用来读取的,比如读取某一行,现在转换后成一堆了,直接就把转换后的TXT内容全读取了。不会像没转换之前的汉字是分行的,每次只读一行。
批处理能把TXT里面分行的汉字转换后unicode码也是按原先TXT的内容那样分行嘛?
能处理有红包。或者价格好议。
作者: pcl_test 时间: 2018-1-25 01:15
回复 12# ainibau
已修改
作者: 520bats 时间: 2021-12-11 12:51
版主的代码 文本是ANSI格式的 出来会乱码
请问下 文本是UFT-8格式的怎么修改? 内容是泰文 也不能用 ANSI的文本格式来保存。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |