如何在 Windows 命令行和批处理脚本中使用文件名中的日语字符?

Pok*_*Joe 3 windows encoding localization batch-file cjk

我正在日语环境中开发日语版的 Windows 7,不幸的是,我需要使用的许多文件和文件夹名称都使用日语字符。

\n\n

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

\n\n
xcopy * "C:\\blahblah\\\xe5\x8b\x95\xe4\xbd\x9c\xe7\xa2\xba\xe8\xaa\x8d\\" /E /R /K /Y /I \n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,在 C:\\blahblah\\ 文件夹内,这是我得到的文件夹的名称:\n C:\\blahblah\\\xe8\x9c\x8d\xe7\xa9\x82\xef\xbd\xbd \xe6\x87\x83\xef\xbd\xa2\xef\xbd\xba\xe9\x9a\xb1\xe6\xa7\x8b

\n\n

问题是 \xe5\x8b\x95\xe4\xbd\x9c\xe7\xa2\xba\xe8\xaa\x8d 已转换为 \xe8\x9c\x8d\xe7\xa9\x82\xef\xbd\xbd \xe6\x87\x83\xef\xbd\xa2\xef\xbd\xba\xe9\x9a\xb1\xe6\xa7\x8b。后者虽然使用亚洲字符(和标点符号),但却是毫无意义的胡言乱语,甚至并非全部都是日语字符。

\n\n

我研究了这个问题,发现许多使用 Windows 英语本地化版本的人都遇到一个问题,即他们看到的是问号而不是日语字符。这不是我使用 Windows 日语本地化时发生的情况 - 如果我启动 cmd 并导航到我想要从中复制、运行dir并获取此输出的源文件夹的父级:

\n\n
2014/02/07  16:36    <DIR>          \xe8\x9c\x8d\xe7\xa9\x82\xef\xbd\xbd\xe6\x87\x83\xef\xbd\xa2\xef\xbd\xba\xe9\x9a\xb1\xe6\xa7\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是胡言乱语,不是真正的日语。

\n\n

那么我需要做什么才能使批处理文件中的 xcopy 命令起作用?

\n

小智 5

我想您已经找到了解决方法,但让我回答一下。

\n\n

如果您有一个UTF-8字符串的字节序列\xe5\x8b\x95\xe4\xbd\x9c\xe7\xa2\xba\xe8\xaa\x8d并将其解析为CP932(又名Shift-JIS)字节序列,您将得到\xe8\x9c\x8d\xe7\xa9\x82\xef\xbd\xbd\xe6\x87\x83\xef\xbd\xa2\xef\xbd\xba\xe9\x9a\xb1\xe6\xa7\x8b或类似的字符串。

\n\n

日语版本的 Windows 已使用CP932作为默认编码,因此我们必须在CP932.

\n\n

就您而言,您必须已将.bat文件写入UTF-8. 你应该把它写在CP932.

\n