懿寯彦訸 懿寯彦訸
关注数: 9 粉丝数: 81 发帖数: 570 关注贴吧数: 8
往GBK编码表增设自定义字符,解决游戏内字符显示问题的改善方案 呃,在上一个帖子其实已经提到过了,我通过往ONS的映射表内加表,再通过16进制编辑器对文本文件进行编辑,实现在游戏里显示GBK编码表里面没有的字符。 但缺点也是显而易见,就是每次要加这种字符时,在16进制编辑器里编辑的容错性极低,而且操作繁琐,另外第二个字节为FF(例如81FF)这样的编码,会让系统无法保存为ANSI编码。所以为了实现特殊字符在文本编辑器里的可视化编辑,彦訸找到了如下方法。 但凡是没有阉割功能的WINDOWS系统里都会有一个名叫「专用字符编辑程序」的玩意,这玩意可以实现往对应编码表增添自定义字符。记得保存。 加完之后我们打开16进制编辑器,往一个空文件里输入刚刚自定义好的字符编码(例如AAA1),之后用记事本打开这个文件。我们会欣喜的发现,记事本里显示的就是刚刚自定义好的字符。 然后惊喜还会继续,假设上面是往GBK编码表里面加字符,我们把这个文档在记事本保存为UTF-8编码,你会发现依旧能够保存成功。并且通过大部分途径查阅电脑UTF-8编码表的时候(包括网上查阅),发现E000这个地方(如果字符保存在GBK的AAA1),出现了刚刚在GBK编码表里自定义好的字符。 我对以上这个现象感到好奇,我稍微研究了以下,得出以下结论: 在「专用字符编辑程序」往GBK编码表增添自定义字符并且保存之后,这个自定义编码会经由CP_936.NLS这个文件映射给UTF-8,而且CP_936.NLS里面已经规定好了AAA1映射到E000,当然这个规定可以通过16进制编辑器对NLS文件进行修改。 不过还有百思不得其解的地方,保存完字符之后,系统里安装的所有字体都可以在记事本、WORD之类显示这个字符(假设在「专用字符编辑程序」里选择的是所有字体),但通过字体编辑器打开系统字体,却发现字体里面根本没有自定义好的字符。那么记事本暂且不提,WORD是怎样把这个自定义字符显示并且可以选择任一系统字体的,我对字体这方面缺少认知,所以如果有懂的朋友希望可以给彦訸讲解一下。 最后,如果自定义的字符在UTF-8编码表里面没有,那么如果要在ONS游戏里面显示,请往字体对应的编码位置里增设那个字符。 卡布奇诺依旧是正义 欢迎讨论,欢迎回复 请勿引战
1 下一页