[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理如何实现ascii/中文字符转换unicode码

bat批处理汉字ascii转换unicode编码
比如这样

版主的代码 文本是ANSI格式的 出来会乱码
请问下 文本是UFT-8格式的怎么修改? 内容是泰文 也不能用 ANSI的文本格式来保存。

TOP

回复 12# ainibau

已修改

TOP

ascii/中文批量转换unicode编码的问题

看了这篇帖子,版主的批处理确实可以用。http://www.bathome.net/thread-41155-1-5.html

但是对我来讲有个问题,

这个问题就是我TXT文本里面的文字多是分行的,批量转换后的unicode码是不分行,因为我这个TXT的内容是用来读取的,比如读取某一行,现在转换后成一堆了,直接就把转换后的TXT内容全读取了。不会像没转换之前的汉字是分行的,每次只读一行。

批处理能把TXT里面分行的汉字转换后unicode码也是按原先TXT的内容那样分行嘛?

能处理有红包。或者价格好议。

TOP

这个人在群里问了,我说给他50元开发个命令行程序,结果啰嗦白天,到最后不说话了,写不写也不说,我就自己琢磨出来了并写了个命令行,然后q这个人,最终还是没有回应,我也就算了,我想说做人要有始有终,不做就不做啦,何必浪费时间跟我啰嗦半天呢!起码回应一声说不弄了不想花钱来论坛问问也行啊,费劲不讨好的事情,以后我保证不干了。表达完毕!

TOP

:victory:

TOP

本帖最后由 codegay 于 2016-7-27 12:27 编辑

python3 一行流
  1. >>> ''.join(map('&#{};'.format,map(str,map(ord,'批睡理之家'))))
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

python3 中用内置函数ord可以返回一个字的unicode值。
用str转为字符串,前面再加&# ,结尾加上;
就可以得到一样的结果。
  1. >>> ord("百")
  2. 30334
  3. >>> str(ord("百"))
  4. '30334'
  5. >>> ord('百')
  6. 30334
  7. >>> '&#' + str(ord('百')) + ';'
  8. '百'
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

Perl/Ruby/Python 都可以轻松实现

本帖最后由 523066680 于 2016-7-26 11:33 编辑

  • use Encode;
  • my $src = decode('utf8', "百度站长工具");
  • $src =~s /(.)/sprintf("\&\#%d;", ord($1))/ge;
  • print $src;

TOP

回复 4# 523066680


    换什么?求给个

TOP

回复 3# aa768228

直接将代码保存为bat文件运行,“批处理之家”这几字没转换?如果能转换,那就是你操作不对,看代码中的注释修改

TOP

回复 3# aa768228


    楼主换一种脚本语言,一两句话就能做的事

TOP

回复 2# pcl_test


    大哥,转换不行,还是原来的字符。

TOP

本帖最后由 pcl_test 于 2018-1-24 14:35 编辑

保存为bat文件运行
  1. //&cls&cscript -nologo -e:jscript "%~f0" "批处理之家"&pause&exit
  2. /*
  3. 用法:
  4. 一、转换文件
  5. 1、指定某个文件 //&cls&dir /a-d/b "指定文本.txt"|cscript -nologo -e:jscript "%~f0"&pause&exit
  6. 2、多个文件 //&cls&dir /a-d/b *.txt|cscript -nologo -e:jscript "%~f0"&pause&exit
  7. 二、转换字符串
  8. //&cls&cscript -nologo -e:jscript "%~f0" "需转换的字符串"&pause&exit
  9. */
  10. var pattern=1;    //设置转换模式
  11. /*
  12. 1为ASCII转Unicode(举->举),2为Unicode转ASCII(个->个),
  13. 3为中文转Unicode(栗->\u6817),4为Unicode转中文(\u5b50->子)
  14. */
  15. var crlf=0;     //是否转换回车换行符,1为是,0为否
  16. if(!/^[1-4]$/.test(pattern) || !/^[01]$/.test(crlf)){WSH.echo('参数有误!');WSH.quit()}
  17. var fso = new ActiveXObject('Scripting.Filesystemobject');
  18. if(WSH.Arguments.length<1){
  19.     while(!WSH.StdIn.AtEndOfStream){
  20.         try{
  21.             var file = WSH.StdIn.ReadLine();
  22.             var f = fso.OpenTextFile(file, 1);
  23.             var txt = f.ReadAll();
  24.             f.Close();
  25.             var f = file.replace(/(.+\\)?([^\\]+)/, '$1$New_$2');
  26.             fso.CreateTextFile(f, 2).Write(Choice(txt));
  27.         }catch(e){}
  28.     }
  29.     WSH.echo('Done');
  30. }else WSH.Echo(Choice(WSH.Arguments(0)));
  31. function Choice(txt){
  32.     switch(pattern){
  33.         case 1: return AsciiToUnicode(txt);break;
  34.         case 2: return UnicodeToAscii(txt);break;
  35.         case 3: return HanziToUnicode(txt);break;
  36.         case 4: return UnicodeToHanzi(txt);break;
  37.     }
  38. }
  39. function AsciiToUnicode(txt){
  40.     var s='';
  41.     for (var i=0; i<txt.length; i++){
  42.         var num=txt.charCodeAt(i);
  43.         if(!crlf && (num==10 ||num==13)){
  44.             s += String.fromCharCode(num);
  45.         }else s += '&#'+num+';';
  46.     }
  47.     return s;
  48. }
  49. function UnicodeToAscii(txt) {
  50.     return txt.replace(/(&#)(\d+);/gi,function($0){return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\d+)(%3B)/g,"$2")));});
  51. }
  52. function HanziToUnicode(txt){
  53.     var s='';
  54.     for (var i=0; i<txt.length; i++){
  55.         var num=txt.charCodeAt(i);
  56.         if(!crlf && (num==10 ||num==13)){
  57.             s += String.fromCharCode(num);
  58.         }else s += '\\u' + ('00'+parseInt(num).toString(16)).slice(-4);
  59.     }
  60.     return s;
  61. }
  62. function UnicodeToHanzi(txt){
  63.     return txt.replace(/(\\u)(\w{1,4})/gi,function($0){return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\w{1,4})/g,"$2")),16)));});
  64. }
复制代码

TOP

返回列表