PCL2 icon indicating copy to clipboard operation
PCL2 copied to clipboard

启动脚本的编码问题

Open wyj2006 opened this issue 4 months ago • 11 comments

检查项

描述

在Windows11中,PCL的版本为2.10.3的情况下,运行启动脚本(在终端中)会导致启动脚本日志中的中文出现乱码

重现步骤

  1. 生成启动脚本
  2. 运行该脚本,发现启动脚本日志中的中文都是乱码

日志与附件

https://github.com/user-attachments/assets/7d3b3400-acfa-4278-8819-9c68d2aebbbf

wyj2006 avatar Aug 02 '25 01:08 wyj2006

去掉启动脚本开头的chcp 65001>nul后,游戏中中文显示正常,但脚本中中文显示不正常,估计是脚本编码与游戏编码不一致导致的

wyj2006 avatar Aug 02 '25 01:08 wyj2006

这个问题应该在2.10.0就解决了啊,为什么又出现了

wyj2006 avatar Aug 02 '25 01:08 wyj2006

什么游戏版本?

Open-KFC avatar Aug 02 '25 10:08 Open-KFC

1.21.4

wyj2006 avatar Aug 02 '25 10:08 wyj2006

我使用 2.10.5 版本的 PCL 下载 mc1.21.4 导出启动脚本后双击运行,游戏主界面中文显示正常。

是模组内容出现的问题吗?建议复现本 bug 并补充提交录屏视频(传不上 github 就传网盘然后挂链接,不要使用必须登录才能下载或预览的网盘)

Open-KFC avatar Aug 02 '25 10:08 Open-KFC

我可能有点表述不清,我指的是游戏日志里的中文显示乱码

https://github.com/user-attachments/assets/7d3b3400-acfa-4278-8819-9c68d2aebbbf

wyj2006 avatar Aug 02 '25 11:08 wyj2006

Snapshot 2.10.5 没有这个问题,合理怀疑龙猫是不是在 2.10.3 改错了什么在 2.10.4/2.10.5 被纠正了

copytiao avatar Aug 02 '25 13:08 copytiao

启动器脚本中输出的日志流似乎是强制使用 GBK 编码(无视 JVM 参数设置?),使用活动代码页 65001 (UTF-8) 会导致编码冲突, 所以把启动器脚本里一系列和 UTF-8 相关的东西都改成 GBK 应该可以解决乱码问题?

另外,快照版 2.10.5 也能复现的说……

lactobionicAcid avatar Aug 02 '25 14:08 lactobionicAcid

调查发现了一个有意思的情况

如果你把 -Dfile.encoding=COMPAT 放在 -Dstdout.encoding=UTF-8-Dstderr.encoding=UTF-8 前面,那么 JVM 会 Ignore 后面的两个参数,导致 JVM 的 Standard I/O 错误使用了 GB18030 进行输出流编码

而当你把 -Dfile.encoding=COMPAT 放在这两个参数后面时,JVM 的 Standard I/O 才会根据这两个参数,使用 UTF-8 编码输出流

copytiao avatar Aug 02 '25 14:08 copytiao

考虑一下此 issue 是否会和 #4627 有关?(仅个人推测,错误请指正)

CreeperIsASpy avatar Aug 06 '25 17:08 CreeperIsASpy

调查发现了一个有意思的情况

如果你把 -Dfile.encoding=COMPAT 放在 -Dstdout.encoding=UTF-8-Dstderr.encoding=UTF-8 前面,那么 JVM 会 Ignore 后面的两个参数,导致 JVM 的 Standard I/O 错误使用了 GB18030 进行输出流编码

而当你把 -Dfile.encoding=COMPAT 放在这两个参数后面时,JVM 的 Standard I/O 才会根据这两个参数,使用 UTF-8 编码输出流

这部分先修了(

LTCatt avatar Aug 12 '25 11:08 LTCatt