Unicode windows批处理文件中的ja字符

Unicode windows批处理文件中的ja字符,unicode,internationalization,batch-file,windows-xp,Unicode,Internationalization,Batch File,Windows Xp,Windows XP.bat文件中日文字符的秘密是什么 我们有一个脚本,用于在kiosk模式下从磁盘打开文件: @ECHO OFF "%ProgramFiles%\Internet Explorer\iexplore.exe" –K "%CD%\XYZ.htm" 当操作系统是英文时,它可以正常工作;当XYZ由英文字符组成时,它也可以正常工作;但是当XYZ由日文字符组成时,当IE试图查找文件时,这些字符就会变得乱七八糟 如果批处理文件保存为Unicode或Unicode big-endian,脚

Windows XP.bat文件中日文字符的秘密是什么

我们有一个脚本,用于在kiosk模式下从磁盘打开文件:

@ECHO OFF
"%ProgramFiles%\Internet Explorer\iexplore.exe" –K "%CD%\XYZ.htm"
当操作系统是英文时,它可以正常工作;当XYZ由英文字符组成时,它也可以正常工作;但是当XYZ由日文字符组成时,当IE试图查找文件时,这些字符就会变得乱七八糟

如果批处理文件保存为Unicode或Unicode big-endian,脚本甚至不会运行

我试过各种方法来编码日语字符。符号与转义不起作用(〹;)

百分比转义无效%xx%xx%xx

ABC工作,AB%43在错误消息中变为AB3,因此百分比转义似乎正在尝试进行参数替换。这已确认,因为%043输入了脚本的名称

一件有效的事情是将ja字符粘贴到命令提示符中

@ECHO OFF
CD "%ProgramFiles%\Internet Explorer\"
Set /p URL ="file to open: "
start iexplore.exe –K %URL%
这告诉我,当参数包含ja字符时,iexplore.exe将正确接受并解析参数,但在将这些字符写入脚本时,则不会

因此,最好知道通过批处理文件成功地将参数输入IE的秘密是什么,而不是通过剪贴板和环境变量

非常感谢您的任何建议

致意

理查德·柯林斯

附言。 另一个帖子提出了这个建议,我还没有跟进:

如果以UNICODE模式打开cmd.exe,您可能会更幸运。使用“cmd/U”


我需要找出这是否可以从脚本内部执行。

首先:批处理文件的国际化支持非常有限。没有直接的方法告诉批处理文件在哪个代码页中。UTF-16无论如何都不存在,因为
cmd
甚至不会解析它

我在回答以下问题时详细说明了一个选项:

这可能有助于满足您的需求

原则上可以归结为以下几点:

echo off
chcp 65001
"%ProgramFiles%\Internet Explorer\iexplore.exe" –K "%CD%\XYZ.htm"
  • 使用具有ASCII单字节映射的编码
  • 在批处理文件的开头放置一个
    chcp…
  • 对文件的其余部分使用设置代码页
您可以使用代码页65001,它是UTF-8,但请确保文件的开头不包含U+FEFF字符(在UTF-16和UTF-32中用作字节顺序标记,有时也用作UTF-8文件的标记)。否则,文件中的第一个命令将生成错误消息

因此,只需使用以下方法:

echo off
chcp 65001
"%ProgramFiles%\Internet Explorer\iexplore.exe" –K "%CD%\XYZ.htm"
并将其保存为不带BOM的UTF-8(注意:记事本不允许这样做),它应该可以工作


cmd/u
在这里什么都做不了,这个建议简直是假的。
/U
开关仅指定Unicode将用于输入和输出(以及管道)的重定向。它与控制台用于输出或读取批处理文件的编码无关


URL编码也帮不了你
cmd
几乎不是一个web浏览器,它不属于HTTP,而且web URL编码也不是很普遍(因此得名)
cmd
对批处理文件和子例程的环境变量和参数使用百分号


“符号和转义”也称为HTML和XML中的字符实体,也不起作用,因为
cmd
也不是HTML或XML。符号用于在一行中执行多个命令。

首先:批处理文件的国际化支持非常有限。没有直接的方法告诉批处理文件在哪个代码页中。UTF-16无论如何都不存在,因为
cmd
甚至不会解析它

我在回答以下问题时详细说明了一个选项:

这可能有助于满足您的需求

原则上可以归结为以下几点:

echo off
chcp 65001
"%ProgramFiles%\Internet Explorer\iexplore.exe" –K "%CD%\XYZ.htm"
  • 使用具有ASCII单字节映射的编码
  • 在批处理文件的开头放置一个
    chcp…
  • 对文件的其余部分使用设置代码页
您可以使用代码页65001,它是UTF-8,但请确保文件的开头不包含U+FEFF字符(在UTF-16和UTF-32中用作字节顺序标记,有时也用作UTF-8文件的标记)。否则,文件中的第一个命令将生成错误消息

因此,只需使用以下方法:

echo off
chcp 65001
"%ProgramFiles%\Internet Explorer\iexplore.exe" –K "%CD%\XYZ.htm"
并将其保存为不带BOM的UTF-8(注意:记事本不允许这样做),它应该可以工作


cmd/u
在这里什么都做不了,这个建议简直是假的。
/U
开关仅指定Unicode将用于输入和输出(以及管道)的重定向。它与控制台用于输出或读取批处理文件的编码无关


URL编码也帮不了你
cmd
几乎不是一个web浏览器,它不属于HTTP,而且web URL编码也不是很普遍(因此得名)
cmd
对批处理文件和子例程的环境变量和参数使用百分号


“符号和转义”也称为HTML和XML中的字符实体,也不起作用,因为
cmd
也不是HTML或XML。符号用于在一行中执行多个命令。

对于记录,已找到此问题的简单答案


如果批处理文件保存为ANSI-它可以工作

为了记录在案,我们为这个问题找到了一个简单的答案


如果批处理文件保存为ANSI-它可以工作

您可以尝试使用Shift JIS编码。

您可以尝试使用Shift JIS编码。

我在
批处理/cmd
文件中也遇到了这个令人沮丧的问题。然而,据我所知,还没有人说明这个问题发生的原因,无论是在这里还是在StackOverflow的其他类似帖子中。最接近于此的声明