Kagamia / WzComparerR2

Maplestory online Extractor
MIT License
406 stars 132 forks source link

.NET 6.0 版本中,EMS 客户端的带重音符号的字母 String 编码不正常 #269

Closed HikariCalyx closed 1 month ago

HikariCalyx commented 1 month ago

在 GMS 的欧洲区存在之前,EMS 是早期 NEXON 欧洲公司面向欧洲国家推出的欧服,该客户端内包含多份不同语言的 String.wz。曾经推出的客户端的安装包可在这里下载: https://archive.org/download/emssetups2024 image

以 EMS v27 版本内置的 StringFR.wz 为例,这是法语的 String 文件,在 .NET 4.x 版本的 WzComparerR2 下,欧洲语言常见的带重音符号的字母会被正常显示。在简体中文的系统编码下,带重音符号的字母以及后续的字母会组合成一个奇怪的汉字,这一点可暂且忽略,因为实际在 GMS 中也存在此情况。导出的 XML 文件只需使用 Visual Studio Code 更换打开的编码方式就可解决。 例如,下图中的 Serpent rétro bleu 在简体中文系统下会显示为 Serpent r閠ro bleu,将导出后的 XML 文件以 GBK 编码保存,再以 ISO 8859-1 编码打开后以 UTF-8 保存即可正常显示。 image

然而,在 .NET 6.0 版本的 WzComparerR2 下,欧洲语言常见的带重音符号的字母会被异常编码成 U+FFFD 字符,导出的 XML 文件也是如此,通用设置内的 WZ 默认编码选项也无法改变编码结果。 image image

Kagamia commented 1 month ago

net462可以用iso8859正常解码 image

net6好像忘记加载codepage包以至于配置无法生效。

但是我突然觉得有更好的解释方案,需要验证一下。

Kagamia commented 1 month ago

image Fixed.