Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
Encoding °;,如何±&²;生产░▒&▓;在这个批处理文件中?_Encoding_Batch File_Cmd_Ascii - Fatal编程技术网

Encoding °;,如何±&²;生产░▒&▓;在这个批处理文件中?

Encoding °;,如何±&²;生产░▒&▓;在这个批处理文件中?,encoding,batch-file,cmd,ascii,Encoding,Batch File,Cmd,Ascii,此代码: @echo off set /p a=Installing [<nul set b=1 :loop if %b% leq 2 set /p a=°<nul if %b% gtr 4 if %b% leq 6 set /p a=±<nul if %b% gtr 6 if %b% leq 8 set /p a=²<nul if %b% gtr 8 if %b% leq 10 set /p a=±<nul i

此代码:

   @echo off
   set /p a=Installing [<nul
   set b=1
   :loop
   if %b% leq 2 set /p a=°<nul
   if %b% gtr 4 if %b% leq 6 set /p a=±<nul
   if %b% gtr 6 if %b% leq 8 set /p a=²<nul
   if %b% gtr 8 if %b% leq 10 set /p a=±<nul
   if %b% gtr 10 set /p a=°<nul
   choice /t 1 /c y /d y>nul
   set /a b=%b%+1
   if %b%==13 (echo ]&goto :eof)
   goto :loop
然而,我似乎无法通过谷歌找到一个解释来解释这是如何工作的。替换其他扩展ascii字符似乎会产生“命令的语法不正确”,因此我们只能猜测这是一种黑客行为,通过设计师无意中的伎俩,某些东西将这些字符交换到扩展ascii集中的较低字符


如果有人能推荐一个好的网站来学习更多关于cmd/cmd程序的功能,我们将不胜感激。

这是因为您的编辑器使用了与DOS和命令行不同的编码

请参见此处的字符176-178:

DOS和WIN列中的字符对由相同的数值表示,但DOS(以及命令行)和Windows(您的文本编辑器)将这些数字显示为不同的符号

如果不清楚:文本文件是一系列字节(数字),其中一个字节的值为176。在DOS下,它用来表示▓ 由于历史原因,glyph和命令行使用与DOS相同的编码。但运行在Windows上的文本编辑器显然使用旧编码读取文件,其中176表示°


您可以尝试找到一个支持437的编辑器,这样可以避免这种混乱。

这可能不是真正的答案,但仍然很有趣:尝试从命令行对批处理文件运行
type
,如
键入mybatchfile.bat
。我的文本编辑器显示
±
和所有其他内容,但
类型
命令显示
和其他。放置<代码>░键入
s作为ª。
edit
命令行编辑器也显示命令行字符,而不是Windows字符。也许是字体的问题,正如acattle的链接所暗示的那样。@acattle-我已经尝试了cmd中的三种可用字体(光栅字体,正是上述结果的基础;现在也是ConsoleAS&Lucida Console);Consolas有一个空白字符表示“”,并且它和Lucida Console都生成了第二个±的命令不正确错误(异常)。如果它是cmd,而不是文字处理器(例如)会怀疑每种字体的字符集是否有不同的字符,只是相同字符集字符的外观不同而已。@tenterhook-谢谢。不过,仍在等待有人解释为什么会出现这种情况。另外,我正在使用记事本编辑批处理文件,而且它显然在使用Lucida控制台,所以我会认为(如果是字体的话)它将显示与控制台设置为这种字体相同的内容,不是吗?谢谢@kamilk-我现在明白了。不过,还有几个后续问题-1)是否有任何方法可以告诉我们哪些程序(如cmd.exe和记事本)正在以代码页的方式使用?2) 我猜字体与代码页有关,解释了cmd窗口中使用的相同字体与记事本中的相同字体有何不同?最后,3)当我用其中一个替换…时,我得到了“命令的语法不正确”的原因有什么想法吗≡…(由于我也不明白的原因,Alt+240似乎无法得到,它在Win7上运行的记事本中给了我这个给c&p的东西)…但是在WinXP中的记事本上给了我一个正确的答案,我很高兴在这里标记你的正确答案,如果你能为我和其他人解决更多的问题的话。1)我不知道任何,除了谷歌搜索、猜测和检查此程序的设置,看看它是否允许您切换它使用的编码(这仅适用于文本编辑器)。2) 我真的不知道字体在内部是如何工作的,但它们与字体是相当独立的。编码用于决定应绘制的字符,字体决定该字符的形状。3) 不是真的。这个字符的等价物应该是ð,所以如果你输入的是ð,但它不起作用,那么我不知道为什么。
    Installing [░░▒▒▓▓▒▒░░]