Board logo

标题: [数值计算] 批处理实现日文与标点符号和十六进制码互转换? [打印本页]

作者: 867258173    时间: 2014-12-1 00:40     标题: 批处理实现日文与标点符号和十六进制码互转换?

有办法实现吗?小弟请教下
作者: amwfjhh    时间: 2014-12-1 17:52

不知这是否你想要的?
  1. @if (0)==(0) echo off
  2. set /p str=输入你要转换的字符串:
  3. set /a nIndex=0
  4. :_GetHexCode
  5. call set tmpChr=%%str:~%nIndex%, 1%%
  6. if "%tmpChr%" == "" echo,&goto :_end
  7. for /f "tokens=*" %%i in ('cscript -nologo -e:jscript %~0 %tmpChr%') do set/p=0x%%i <nul
  8. set /a nIndex+=1
  9. goto :_GetHexCode
  10. :_end
  11. pause&goto :EOF
  12. @end
  13. WScript.echo(WScript.arguments(0).charCodeAt(0).toString(16));
复制代码

作者: 867258173    时间: 2014-12-2 18:39

回复 2# amwfjhh
只是简单的一句
「ふぅ……」
转十六进制码
0x输入错误
作者: amwfjhh    时间: 2014-12-2 20:39

回复 3# 867258173


    你是什么系统环境?我这里显示正常。
作者: terse    时间: 2014-12-2 22:49

本帖最后由 terse 于 2014-12-2 22:51 编辑
  1. @if (0)==(0) echo off
  2. cscript -nologo -e:jscript %0
  3. echo,&pause&goto :EOF
  4. @end
  5. WScript.echo("请输入:")
  6. var str = WScript.StdIn.ReadLine();
  7. WScript.echo()
  8. var stringToHex = {
  9.     on : function (str) {
  10.         var a = [], i = 0;
  11.         for (; i < str.length ;) a[i] = "0x"+ str.charCodeAt(i ++).toString(16);
  12.         return a.join(" ");
  13.     }
  14. };
  15. if (str != "") {
  16.    WScript.echo("Hex: " + stringToHex.on(str))
  17. }
复制代码

作者: amwfjhh    时间: 2014-12-2 23:13

回复 5# terse


    你这算混进羊群的狼吧,通篇功能都是JS来弄了,偏偏要披外BAT的外衣……
作者: 867258173    时间: 2014-12-3 20:27

回复 5# terse


成功了,但怎么显示的跟sjis-hex不同。
82 D3 82 A3 81 63 81 63
http://www.400gb.com/file/79685636
这是Java做的,有办法用批处理实现并导出txt原日文文本和SHIFT-JIS, UTF16, UTF16 Big Endian,UTF8编码十六进制码互换吗?
作者: terse    时间: 2014-12-4 01:13

回复 7# 867258173
还原这样 再转其他编码 那就改代码
  1. @if (0)==(0) echo off
  2. cscript -nologo -e:jscript %0
  3. pause&goto :EOF
  4. @end
  5. WScript.echo('请输入:')
  6. var str = WScript.StdIn.ReadLine()
  7. var stringToHex = {
  8.     on : function (str) {
  9.         var a = [], i = 0;
  10.         for (; i < str.length ;) a[i] = '0x'+("00" + str.charCodeAt(i ++).toString(16)).slice(-4);
  11.         return "" + a.join(" ");
  12.     },
  13.     un : function (str) {
  14.         return unescape(str.replace(/\s?0x/g, "%u"));
  15.     }
  16. };
  17.    var s = stringToHex.on(str)
  18.    WScript.echo('Hex: ' + s + '\r\n'+ '还原: ' + stringToHex.un(s))
  19.    WScript.echo()
复制代码

作者: CrLf    时间: 2014-12-4 01:36

本帖最后由 CrLf 于 2014-12-4 01:37 编辑

正在制作中的 JSConsole 2.0 可以这样:
  1. var arr=bin2asc(iconv_toBin('ふぅ……','shift-jis')).toArray()
  2. arr.EACH(Number.to16).EACH(String.toUpperCase).join(' ')
  3. //得到的结果是: 82 D3 82 A3 81 63 81 63
复制代码
还在修改扩建优化中,过阵子把文档做好了再一起放出来




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2