Windows容器中含中文参数的EXE程序编码异常问题排查
Windows容器中EXE程序处理中文参数的编码问题
- 我有一个用于文件格式转换的EXE程序,输入文件名包含中文时,在语言环境为zh-CN、
chcp显示代码页936的Windows 10/11系统上可正常运行。 - 使用
mcr.microsoft.com/windows/servercore:ltsc2022镜像部署Docker,宿主机为Windows 11并添加--isolation=process参数。容器内Get-WinSystemLocale显示为zh-CN(和宿主机一致),但chcp仍显示437,怀疑是代码页导致的问题。 - 此前在全新安装的英文语言Windows 10上运行该程序失败,将「控制面板→区域→管理→非Unicode程序的语言」设置为简体中文后恢复正常。
更新:测试调整代码页至936后,程序接收中文参数仍无法输出正确内容。为此编写了一个简化的测试程序,功能是接收含中文的参数并打印:
#include <iostream> int main(int argc, char* argv[]) { std::cout << argv[1] << std::endl; return 0; }
宿主机运行结果(chcp:936,Get-WinSystemLocale:zh-CN)
.\helloworld.exe hello // 输出 hello .\helloworld.exe 你好 // 输出 你好
Docker容器内运行结果(chcp:936,Get-WinSystemLocale:zh-CN)
.\helloworld.exe hello // 输出 hello .\helloworld.exe 你好 // 输出 ??
内容的提问来源于stack exchange,提问作者wqlu
相关产品推荐
相关产品推荐

