Windows下用Xming时Docker中Eclipse出现无效字符错误求助
我之前在Docker容器里跑Eclipse时也碰到过类似的字符编码问题,尤其是特殊符号识别异常的情况,结合你用Windows 7+Xming+Docker的场景,这几个调整应该能解决双引号的无效字符错误:
确保容器内系统Locale完全生效
只在Dockerfile里设置环境变量还不够,很多基础镜像默认没有生成对应的UTF-8 locale文件,需要先安装locale工具并生成目标编码。以Debian/Ubuntu系镜像为例,修改Dockerfile添加以下内容:RUN apt-get update && apt-get install -y locales \ && locale-gen en_US.UTF-8 \ && rm -rf /var/lib/apt/lists/* ENV LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8构建新镜像后,启动容器执行
locale命令,确认所有输出项都是你设置的UTF-8编码,才算系统级Locale配置生效。配置Xming使用UTF-8编码
Xming的字符编码设置会直接影响桌面应用的字符传递,右键Xming的快捷方式,修改目标路径添加-utf8参数:"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow -utf8重启Xming后再启动容器里的Eclipse,确保X服务器以UTF-8格式传递字符。
强制Eclipse和JVM使用UTF-8编码
启动Eclipse后,进入Window > Preferences > General > Workspace,将Text file encoding设置为UTF-8;再进入General > Content Types,把所有文本相关类型(比如Java、XML、Plain Text等)的默认编码都改成UTF-8。
另外,也可以在Eclipse的启动脚本里添加JVM参数,强制编码:./eclipse -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8启动容器时显式指定Locale环境变量
有时候镜像构建时的环境变量可能被覆盖,启动容器时可以手动指定:docker run -e LANG=en_US.UTF-8 -e LC_ALL=en_US.UTF-8 [你的镜像名]
内容的提问来源于stack exchange,提问作者Suhas Kumar

