我怎样在Windows命令行和批处理脚本中处理包含日语字符的文件名?

3

我正在处理一个日文版的Windows 7,在日本环境下工作,不幸的是我需要处理的许多文件和文件夹名称都使用了日语字符。

例如,我在.bat文件中有这一行:

xcopy * "C:\blahblah\動作確認\" /E /R /K /Y /I 

然而,在C:\blahblah\文件夹中,我得到了以下文件夹名称:C:\blahblah\蜍穂ス懃「コ隱構

问题在于,“动作确认”已经变成了“蜍穂ス懃「コ隱構”。后者虽然使用了亚洲字符(和标点符号),但是它是毫无意义的胡言乱语,甚至不是所有的日语字符。

我研究了这个问题,并发现许多使用英文本地化Windows的人会遇到一个问题,即他们看到的是问号而不是日语字符。但是,对于我使用日语本地化的Windows来说,情况并非如此-如果我启动cmd并导航到我想要复制的源文件夹的父文件夹,运行dir并获得以下输出:

2014/02/07  16:36    <DIR>          蜍穂ス懃「コ隱構

这只是一些乱码,并不是真正的日文。

那么我该怎么做才能让我的批处理文件中的xcopy命令工作?


你可能会更成功地使用短名称。尝试使用 dir /x 命令。 - Stephan
这给了我蜍穂ス~1 蜍穂ス懃「コ隱構。同样的乱码,但被截断了。 - PokeJoe
2个回答

5
我猜您已经找到了解决方法,但是让我回答一下。
如果您有一个字符串的UTF-8字节序列動作確認并将其解析为CP932(又名Shift-JIS)字节序列,则会得到蜍穂ス懃「コ隱構或类似的字符串。
Windows的日语版本使用CP932作为默认编码,因此我们必须指定文件/目录名称为CP932
在您的情况下,您必须用UTF-8编写您的.bat文件。您应该将它写成CP932

0
除了 @t_motooka 的回答之外,如果你将系统区域设置(控制面板 / 区域和语言 / 管理 / 更改系统区域)从英语(默认)更改为日语,cmd 默认的代码页将会变成 CP932,在此之后,大部分与日语相关的工作都应该能正常进行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接