Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于解码文件中HTML实体的Windows工具_Javascript_Windows_Batch File_Command Line - Fatal编程技术网

Javascript 用于解码文件中HTML实体的Windows工具

Javascript 用于解码文件中HTML实体的Windows工具,javascript,windows,batch-file,command-line,Javascript,Windows,Batch File,Command Line,是否有针对Windows的命令行/批处理脚本工具,可用于解码HTML授权,如,&weierp,以及‰到可读的UTF-8文本 我发现这个web工具()使用javascript,它可以做到这一点,但我需要从Windows批处理文件中完成这一点。我知道惊人的JREPL.bat实用程序,它将javascript合并到windows命令shell中,以替换文件中的正则表达式。我只是找不到类似的HTML实体转换工具 编辑:对于那些聪明的程序员,我希望你能编写一个批处理工具,可以执行HTML实体解码

是否有针对Windows的命令行/批处理脚本工具,可用于解码HTML授权,如
&weierp,以及
到可读的UTF-8文本

我发现这个web工具()使用javascript,它可以做到这一点,但我需要从Windows批处理文件中完成这一点。我知道惊人的JREPL.bat实用程序,它将javascript合并到windows命令shell中,以替换文件中的正则表达式。我只是找不到类似的HTML实体转换工具


编辑:对于那些聪明的程序员,我希望你能编写一个批处理工具,可以执行HTML实体解码/编码,以帮助我和未来的读者寻找相同的解决方案。以下是我认为可以使用的Github页面:

您不需要大量的应用程序(如JREPL.bat或我自己的)或复杂的程序来执行如此简单的替换。下面的小批量文件是执行3个HTML实体替换的示例:

@set @a=0 // & cscript //nologo //E:JScript "%~F0" < input.txt & goto :EOF

var rep = new Array();
rep["&#xA9;"]   = "\u00A9";
rep["&#xD306;"] = "\uD306";
rep["&#x2603;"] = "\u2603";

var f = new ActiveXObject("Scripting.FileSystemObject").CreateTextFile("output.txt", true, true);
f.Write(WScript.Stdin.ReadAll().replace(/&#xA9;|&#xD306;|&#x2603;/g,function (A) {return rep[A]}));
f.Close();
output.txt:

Foo © bar 팆 baz ☃ qux

您只需要添加您想要转换的任意数量的字符等价物…

将JScript合并到批处理文件中是很简单的,因此您可以轻松地编写自己的自定义混合JScript/批处理脚本,该脚本合并了在中找到的he.js

但是使用您已经提到的更简单。您可以使用
/JLIB
选项加载he.js代码,从而使JREPL可以访问所有的he(html实体)功能

下面是一个对test.txt进行解码、覆盖原始文件的简单示例

jrepl "^.*" "he.decode($0)" /jlib "he.js" /f test.txt /o -
这不是最有效的方法,但它可能足够快,而且非常方便

下面是另一个示例,它对test.txt(包括换行符)中的每个字符进行编码,并将结果写入out.txt

jrepl "^[\s\S]*" "he.encode($0,{encodeEverything:true})" /m /j /jlib he\he.js /f test.txt /o out.txt
您应该研究he和JREPL的所有文档,以发现所有的可能性


示例中的regex部分似乎是一个障碍,而不是帮助。但是很容易想象只对输入文本的一部分进行有选择的编码是多么有用。或者您可以使用JREPL/T选项为不同的文本部分使用不同的编码选项。

我不知道如何使用它。您能告诉我如何从Windows批处理文件调用它吗?只需将代码复制到扩展名为.BAT的文件中,例如:
convert.BAT
;然后,通过在命令提示符下键入其名称来调用它:
C:\Your\path>convert.bat
。您可以使用其他文件名修改代码中的
input.txt
output.txt
文件名,或者使用参数。要从另一个批处理文件调用此批处理文件,请使用call命令:
call convert.bat
感谢您的解释。如果不太麻烦,您是否可以编写相反的脚本,使用js代码将除0-127范围ASCII字符以外的所有字符编码为HTML实体,如下所示:
函数a(b){var c='';for(i=0;i127){c+='&#'+b.charCodeAt(i)+';}其他{c+=b.charAt(i);}}document.forms.conversionForm.outputText.value=c;}
?我认为使用这个概念,您不必枚举字符数组,因为实际上有数千个unicode字符。我在上找到它,我打算编辑我的消息,以澄清我需要转换为HTML数字实体,但显然,编辑5分钟以上的旧消息是不允许的。嗨@dbenham!如果不太麻烦的话,您是否可以编写一个相反的windows batch/jscript混合代码,它可以使用如下js代码将除0-127范围ASCII字符以外的所有字符编码为数字HTML实体:
函数a(b){var c='';for(i=0;i127){c+='&#+b.charCodeAt(i)+}否则{c+=b.charAt(i)}document.forms.conversionForm.outputText.value=c;}?我发现它看起来很简单。我知道像这样的编码任务对你来说是微不足道的。提前谢谢你!
jrepl "^[\s\S]*" "he.encode($0,{encodeEverything:true})" /m /j /jlib he\he.js /f test.txt /o out.txt