3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 1540|回复: 2
打印 上一主题 下一主题

[求助] 求助一下关于3DM软件乱码的事情

[复制链接]

1

主题

4

帖子

5

积分

新手玩家

Rank: 1

贡献度
0
金元
45
积分
5
精华
0
注册时间
2020-10-20
跳转到指定楼层
主题
发表于 2021-1-4 18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
起因是这样的,之前在3大妈下载了一个单机的游戏修改器,然后修改器是再下载了一个组件还是什么的,我现在也不知道了。然后问题来了...自从那以后,3大妈的所有修改器都是乱码,包括同文件里的使用说明全是乱码,而且仅限于3大妈的软件。就是使用其他的软件一点问题就没有,感觉系统应该是没啥,但就不知道为啥仅仅是3dm的修改器受到了影响,想问问有没有其他人遇到了这个问题,有没有解决了的?
回复

使用道具 举报

2682

主题

1万

帖子

3万

积分

游戏天王

Rank: 11Rank: 11Rank: 11Rank: 11

贡献度
4717
金元
128845
积分
31753
精华
0
注册时间
2006-10-22

游戏天王~

舒服的沙发
发表于 2021-1-4 19:18 | 只看该作者
本帖最后由 lchunghan 于 2021-1-4 19:23 编辑

Unicode是Unicode.org制定的编码标准,目前得到了绝大部分操作系统和编程语言的支持。Unicode.org官方对Unicode的定义是:Unicode provides a unique number for every character。Unicode所做的是为每个字符定义了一个相应的数字表示。比如,“a“的Unicode值是0x0061,“一”的Unicde值是0x4E00,这是最简单的情况,每个字符用2个字节表示。

Unicode.org定义了百万个以上的字符,如果将所有的字符用统一的格式表示,需要的是4个字节。“a“的Unicode表示就会变成0x00000061,而“一“的Unicode值是0x00004E00。实际上,这就是UTF32。

但是,大部分字符只使用2个字节就可以表示了。英文的Unicode范围是0x0000-0x007F,中文的Unicode范围是0x4E00-0x9FEF(总共20976个),真正需要扩展到4个字节来表示的字符少之又少,所以微软想出了直接使用2个字节来表示Unicode。Unicode就是两个字节的。对于那些需要4个字节才能表示的字符,使用一种代理的手法来扩展。这样的好处是大量的节约了存取空间,也提高了处理的速度。这种Unicode表示方法就是UTF16,至于UTF16-LE和UTF16-BE,与计算机的CPU构架有关。LE指Little Endian,而BE指Big Endian。一般的X86系统都是Little Endian。

由于欧洲和北美,实际上使用的编码范围在0x0000-0x00FF之间,只需要一个字符就可以表示所有的字符。即使是使用UTF16来作为内存的存取方式,还是会带来巨大的内存浪费,因此微软突发奇想就有了UTF8的编码方式。这是一种很灵活的编码,对于只需要1个字节的字符,就使用一个字节,对于中文等语言需要两个字节才能表示的字符,则通过一个UTF16-UTF8的算法实现相互之间的转换(浪费CPU资源了),而对于需要4个字节才能表示的字符,UTF8可以扩展到6个字节每个字符。UTF8使用的算法很有意思,大致映射关系如下:
         UTF-32                           UTF8
         0x00000000 - 0x0000007F          0xxxxxxx
         0x00000080 - 0x000007FF          110xxxxx 10xxxxxx
         0x00000800 - 0x0000FFFF          1110xxxx 10xxxxxx 10xxxxxx
         0x00010000 - 0x001FFFFF          11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
         0x00200000 - 0x03FFFFFF          111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

        0x04000000 - 0x7FFFFFFF          1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

由于UTF8可以方便的转换为UTF16和UTF32。而且UTF8在每个操作系统平台上的实现都是一样的,也不存在跨平台的问题,所以UTF8成为跨平台的Unicode很好的解决方案。当然微软没考虑中文,由于中文每个字符需要3个字节才能表示。那么问题来了,出现乱码的问题在于编码和译码的格式不统一,例如编码为window 936格式译码为utf-8 , 通俗的说,去店里买的是一个球,然后别人问你球的形状,你拿出了一个正方体说这是球,于是大家都认不出了。

Win10 默认编码格式码和译码的格式不统一, 就像刚传话一样 ,你跟中间人说话 ,中间人记住了你说的话,告诉第三个人不一样的话 , 就是这个道理。




1.重新部署语言
2.重装系统
utf-8并不支持中文 ,所以一般只能选择BOM。  微软有一个实验机制将win10系统统一utf-8(千万别点,你是中国人这个不是给你用的。)
当年索菲的炼金工房和菲利斯的炼金工房汉化就是这问题,游戏是utf-8中文上去多半乱码根本无解,所以这种东西直接打死,脑残暗荣自己不出中文,还不让汉化。



回复 支持 反对

使用道具 举报

1

主题

4

帖子

5

积分

新手玩家

Rank: 1

贡献度
0
金元
45
积分
5
精华
0
注册时间
2020-10-20
硬硬的板凳
 楼主| 发表于 2021-1-5 22:03 | 只看该作者
lchunghan 发表于 2021-1-4 19:18
Unicode是Unicode.org制定的编码标准,目前得到了绝大部分操作系统和编程语言的支持。Unicode.org官方对Uni ...

大佬说的很多东西真的不是很清楚...就想问,你的意思是要么重新部署语言,要么重装系统。那我肯定是要前者啊,问题是怎么重新部署语言呢?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2025-2-1 10:54 , Processed in 0.096462 second(s), 15 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表