LiMinggang / madedit-mod

MadEdit-Mod is a cross platform Text/Hex editor(based on the madedit project @ sourceforge)
GNU General Public License v3.0
124 stars 27 forks source link

编码转换至shift-jis时部分区段文字内码对应问题 #289

Closed findpkq closed 5 years ago

findpkq commented 5 years ago

Madedit-Mod version (or branch):0.4.16(或者更低版本)

platform/architecture:win10 1903

现在使用的shift-jis编码本身有一些相同文字对应两个16进制内码的情况 看着是包含两次不同的扩张标准 NEC選定IBM拡張文字 | ED40 - EEFC IBM拡張文字 | FA40 - FC4B https://howlingpixel.com/i-ja/Microsoft%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8932

http://www.chi2ko.com/jingyan/shiftjis2uni.htm madedit将这些文字对应到了第二次出现的内码(有些在线查询内码也是这么做的),但至少这些文字在python3用shift-jis/cp932解码时出现问题了

从gbk/utf-8转换,是否开启额外的选项均是这种情况

例如: 菇(EE79) 转换为FB96 厲(ED71)转换为FA8E 都差了D1D 从EE40区段开始都有类似情况

不知道是否能加上选项来调整这些映射情况,毕竟不少软件游戏所使用的字模基本截至到EEEC就停了。中文汉字转日文汉字还能将未映射部分独立友好地标记出来还是得依赖mad-edit呢,所以提了这个比较小众的需求。

Best regars~ : )

LiMinggang commented 5 years ago

你是用的这个吗? image

findpkq commented 5 years ago

你是用的这个吗? image

是的 查了些资料,现在的会更接近Windows-31J/MS932?

刚自己重整了下之前写的Py小工具,从ms932编码识别mad-edit转换过的文本,读取再写入的过程中python能自动把这些文字映射回第一次出现的内码了,那这个问题的优先级对我个人来说暂时比较低了

如果真的需要处理的话,可以试着另外加上旧版的cp932标准编码?

非常感谢

另外日文汉字转中文汉字,有个【著】转换后成了【着】,这种边边角角的问题就不另开了^ ^||

Best regards~

LiMinggang commented 5 years ago

这个内码转换是wxWidgets(www.wxwigets.org) 借助操作系统实现的。我对日文是一窍不通,你要是共享你的脚本给我,我可以看看是不是能做到下面的那些Radio box中去。 另外,MadEdit-Mod是用Python(2.7)语法脚本作为宏语言的。

findpkq commented 5 years ago

这个内码转换是wxWidgets(www.wxwigets.org) 借助操作系统实现的。我对日文是一窍不通,你要是共享你的脚本给我,我可以看看是不是能做到下面的那些Radio box中去。 另外,MadEdit-Mod是用Python(2.7)语法脚本作为宏语言的。

我只是单纯用python以ms932编码读取下文件后就它自动映射过去了(open(file,encoding='ms932')),没用上mad-edit的宏来着

wxWidgets这么处理应该是搜索时先搜到了第二次出现的内码然后就这么转过去了,在ms932/Windows-31J这个标准下映射到第二次出现的内码本身也不算错吧,很多在线转换出的hex也是FXXX区段的。

另外感谢提醒看了下wxwidgets提供的Encoding wxFONTENCODING_SHIFT_JIS 本身等同于wxFONTENCODING_CP932了,那估计都是基于操作系统里已有的ms932,其他如wxFONTENCODING_MACJAPANESE也是相同结果,mad-edit没加入的iso-2022-jp又是完全另外的一套编码,那应该没什么可修改的余地或者新增哪个编码作为可选项来当替代方案了

让你费心啦 Best regards~

LiMinggang commented 5 years ago

没事,MadEdit,或者说wxWidgets是动态根据运行时操作系统对编码的支持进行支持的(在这里有总的列表 https://docs.wxwidgets.org/3.0/interface_2wx_2font_8h.html)。 除非引入第三方的编码解决方案,比如ICU,那个会导致MadEdit增加20多M尺寸。