如何在简体中文xp下显示big5字符?

guangmingdeshenju 2011-07-31 09:04:15
就是在简体XP下能够正常显示big5的字符,
一款游戏有台湾用户发言,但他输入得是big5,所以其它简体系统上就是乱码。
可不可以在简体系统上安装什么big5字体,就可以让系统能够显示并接受big5输入字符?
...全文
488 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
guangmingdeshenju 2011-08-07
  • 打赏
  • 举报
回复
输入法一般默认输入的字符都是 操作系统默认的
但它又有自己的库,所以可以选择性地输入其他编码的字符,但支持不得看 接收字符
的软件是如何处理的啦
maquan 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 guangmingdeshenju 的回复:]
输入法的问题?太牵强了。。
现在只能在程序里转换了。。
[/Quote]
不敢说一定是输入法的问题,但貌似跟输入法有一定的关系。

如果我上一贴的分析是正确的,那么“在程序里转换”即使看上去能工作也未必可靠,因为一个“BIG5 字节流”被当作“GBK 字节流”强行解析一遍后,从控件得到的“DBCS 字节流(假设你的程序是 UNICODE 方式编译)”或者是“GBK 字节流(假设你的程序是 MBCS 方式编译)”不仅看上去是乱码,而且事实上可能已经发生了数据残损,有些字符已经被替换了。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
maquan 2011-08-03
  • 打赏
  • 举报
回复
查了一些关于输入法(IME)的资料,有一些理解,不一定准确,提出来,欢迎指正:

输入法能够向应用程序输送数据流,从而达到输入字符的目标。而输送的数据流是有编码方式的,在简体中文的操作系统中,最常见的就是 GBK 编码。有些输入法能输入繁体字,但也是用的 GBK 编码,比如搜狗/Google输入法。

但是,有些输入法提供的可能就是 BIG5 的数据流(比如极点五笔,没接触过,纯属猜测),那么,对于简体中文版的应用程序(即使是用 UNICODE 方式编译,但运行时的 Locale 还是 0804),它期望的数据流是 GBK 的(这个特性应该是 Windows 标准控件的缺省形式),所以就导致了上屏即为乱码。

如果输入法能选择输出为 GBK 编码方式(同样可以输出繁体字),则问题自然解决。否则就要改造 EDIT 控件,让它识别出 IME 的语言类型,然后对输入的数据流进行适当的编码转换,这个可以参考微软提供的例子 http://msdn.microsoft.com/en-us/library/0x02zb6d(v=vs.71).aspx


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
guangmingdeshenju 2011-08-03
  • 打赏
  • 举报
回复
输入法的问题?太牵强了。。
现在只能在程序里转换了。。
guangmingdeshenju 2011-08-02
  • 打赏
  • 举报
回复
我尝试过的:
就是用极点五笔输入big5字符,比如我打出的是“你好”,但当你确定后,输到文本框上的却是乱码。。。。
这个怎么解释?
maquan 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 guangmingdeshenju 的回复:]
我只是想知道 可不可以安装什么字体库。。实现 简体系统显示big5字符。。
这是重点。。。。
还有就是在繁体系统上安装简体字,实现显示gbk
有没有什么实现。。。。
[/Quote]
绝对可以。你有没有注意到,就在这个 CSDN 论坛里,偶尔就有用繁体字发言的?

一般情况下,装 XP 的时候,缺省应该是安装了繁体字库的。你说的“一款游戏有台湾用户发言,但他输入得是big5,所以其它简体系统上就是乱码”,最有可能的原因,不是因为显示的时候没有繁体字库,而是输入的时候没有进行恰当的编码处理。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复

信息流A------>字库A-------\
\
信息流B------>字库B---------屏幕看到的结果
/
信息流C------>字库C-------/
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
不管是英文字符还是中文字符
原理其实很简单

就是从信息流得到一个数据
根据该数据到字库对应位置取字模
根据字模数据画字

我们在屏幕看到的结果是一样的情况
可以这样表示

信息流A------>字库A-------\
\
信息流B------>字库B---------屏幕看到的结果
/
信息流C------>字库C-------/

那么,楼主现在手头有的条件是: 信息流BIG,字库GB
那么结局办法有四种:
一是转换信息流: 信息流BIG-->★-->信息流GB-->字库GB-->屏幕
二是转换字库 : 信息流BIG-->字库BIG-->屏幕

第一种办法要在源程序实现,一般是 信息流BIG-->unicode-->信息流GB
第二种办法嘛相对简单,但要软件本身提供字体设置功能,还要知道软件本身使用的字库
找个台湾朋友传一个他机器上的就可以了.

第三种办法难度大,是第一种的扩展,随便说说
自创游戏修改类似的程序,监控软件资源,更改信息流BIG-->信息流GB
第四种办法更难,直接扫描软件组成文件,修改所有的信息流BIG-->信息流GB

三四两情况要求对内存,文件结构等知识熟练掌握,有判断能力.

O了,楼主看着办

gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
装字库可以
程序配合在不同区域使用不同字库
maquan 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 guangmingdeshenju 的回复:]
就是空格上屏后就乱码。。
现在可不可以有什么方法对输入得字符进行判定,如果是big5再转换成unicode或gbk。
不同的编码可以判定嘛?
大家都在说unicode,可用户输入可能是其它编码啊?
[/Quote]
感觉像是输入法的问题……
maquan 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 guangmingdeshenju 的回复:]
就是在简体XP下能够正常显示big5的字符,
一款游戏有台湾用户发言,但他输入得是big5,所以其它简体系统上就是乱码。可不可以在简体系统上安装什么big5字体,就可以让系统能够显示并接受big5输入字符?
[/Quote]
这个问题我是这么理解的:

对于一个文本框来说,不存在“输入 BIG5”这种说法,只能说“输入了繁体字”,因为在 Windows 标准控件里字符都是用 Unicode 表示的(就如楼上所说,Windows 内核是 Unicode 的)。

而当你的程序试图从文本框里取出字符串的时候,终究是要通过 API 的。如果你的程序是用 UNICODE 方式构建的,就没问题了,因为你将调用的是 Unicode 版的 API(比如 GetWindowTextW),程序本身的字符串存储形式也是 Unicode 的;但如果你的程序是用“多字节字符集(MBCS)”或者 ANSI 构建的,那么你调用的就是 ANSI 版的 API(比如 GetWindowTextA),程序本身的字符串存储形式也将是 GBK 的,而 GBK 字符集能表达的内容并不包括 Unicode 中的所有繁体字,也就是说,字符串从文本框里取出来的时候就变成乱码了。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
http://download.csdn.net/source/2436504
这个计算器你可以下去试试

有一个BIG和GB调试转换的功能
你把你得的那个乱码拷贝到右下角的框里,只转一个汉字

然后把GB2312框得到的数据输入到BIG--5框里
如果汉字正常了,说明问题就是了
guangmingdeshenju 2011-08-02
  • 打赏
  • 举报
回复
就是空格上屏后就乱码。。
现在可不可以有什么方法对输入得字符进行判定,如果是big5再转换成unicode或gbk。
不同的编码可以判定嘛?
大家都在说unicode,可用户输入可能是其它编码啊?
Zimmerk 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 guangmingdeshenju 的回复:]

我尝试过的:
就是用极点五笔输入big5字符,比如我打出的是“你好”,但当你确定后,输到文本框上的却是乱码。。。。
这个怎么解释?
[/Quote]
是空格上屏后就出现乱码还是你再输出去另一个文本框了?一般来说只上屏不会出现乱码。。。这种情况还真没有遇过
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
输入法的原理应该是:


给输入法自己 -->输入法的输出处理-->新信息流A-->显示A
/
键盘信号-->输入法处理-->信息流S
\
给计事本软件 -->记事本的输出处理-->新信息流B-->显示B


请问,信息流S是BIG流还是GB流
请问,新信息流A和新信息流B是一样的吗?
请问,显示A和显示B是一样的吗

为什么要区分显示?因为显示的时候确定调用的字库

这么多不同点,你为结果会一样吗?
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复

下面你看了就清楚为什么了

给极点输入软件 -->处理-->显示
/
键盘输入-->信息流
\
给计事本软件 -->处理-->显示


现在输入软件提示框显示的是正常的
那么计事本是不是应该也正常啊????????

一个信息流针对一个软件和针对两个软件是一回事情吗????

想不过来是你的事情.慢慢想
辰岡墨竹 2011-08-02
  • 打赏
  • 举报
回复
如果不用SBAppLocale或AppLocale,你只能让用户修改自己的“非Unicode程序的语言”设置,但是这样会影响到Office、MS安装服务等程序,导致那些用户自己的ANSI程序乱码,副作用太大。
辰岡墨竹 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 guangmingdeshenju 的回复:]

程序编译成unicode的,用户如果还是输入big5或者gbk。。
那会怎么样?
就是说输入框根本无法显示吧?
[/Quote]

不,因为Windows内核是Unicode的,同样输入组件也是。它会根据应用程序的类型,选择ANSI或Unicode编码。不过现在一般的主流输入法都是Unicode的。
光安装Big5字体是没有用的。你可以打开“控制面板”里的“区域和语言选项”,在“高级”里有一个“非Unicode程序的语言”。这个设置是全局设置,也就是所有用户都只能用同一种ANSI编码。
编码是比字体是更底层的东西,编码解释不对,字体显示肯定不对。而且ANSI程序调用的API肯定是ANSI版本的,然后会被转换为Unicode,传递给Unicode函数。你无法指定API用其它编码来解释传入的字符串。
只用一种方法,就是用SBAppLocale,这是一个微软的AppLocale的命令行克隆版,无需安装。
http://www.steelbytes.com/?mid=45
不过和Unicode程序比较来说,这种方法只能是下策。因为Big5的字符和GBK的字符数量不一样,也不是一一对应的。因为无法进行完全一对一的转换。举个其它的例子,GBK里没有日文的片假名间隔点和半角假名,基于GBK的ANSI程序无法打开名字里含有这些符号的文件。
纯Unicode程序就不存在这个问题。
用户 昵称 2011-08-01
  • 打赏
  • 举报
回复
unicode不分繁简,只要有字库,就能显对。
Waistcoat22 2011-08-01
  • 打赏
  • 举报
回复
如果编译为UNICODE,不论用户输入的BIG5还是GBK,都可以正常显示的,因为不论是啥字符,UNICODE编码是固定的,操作系统内部实现就是UNICODE的。
加载更多回复(6)
【超级记事本(SuperNotePad) V6.40.959使用说明】 【制  作】︰Savage 【适用平台】︰Windows XP/Windows 2003/Windows Vista 【联  系】︰log2.0@163.com 【校  验】︰MD5: 68F54DC19E37B17417F47A7DA6707820        SHA1: 01709CB64B0BA21EDD4C0B808384A8590480167F 【SuperNotePad.exe 说明】︰ ---------------------- 1.主程序大小132 KB (135,680 字节); 2.代码高效,程序已经经过近四百多次的调试; 3.信息加密算法安全高效,可任意深度加密; 4.右键集合了大多数常用功能,不常用的在"工具"中; 5.主要的特色功能︰ 00) 语音朗读文本 (注:[自定义欢迎词]中可更改欢迎语音;                  XP下初始只有一个缺省语音引擎,为英文MSSam;                  朗读中文需要TTS简体中文语音库,没有的请下载,                  否则将无法阅读中文.) 01) 文本转为语音文件 02) 信息密钥对称加密 (注:可任意深度加密;                  密钥支持任意长度中文/英文/特殊字符,有效抵抗                  穷举密钥攻击;                  若进行多重加密可使得穷举密钥解密变成不可能                  完成的任务.) 03) 计算表达式    例︰2*sin(30*3.1415926/180) 支持批量表达式                  计算,每个表达式请放在独立的行中 04) 执行DOS命令     例︰@echo off&setlocal; EnableDelayedExpansion&color; 0f&set; all=1&set; /A a=0&set; /A b=1&set; /A c=0&for; /L %%i in (0,1,44) do (set /A c=!a!+!b!&set; /A a=!b!&set; /A b=!c!&set; all=!all! !c!)&if; %%i equ 44 (echo 斐波纳齐:!all!)&pause;>nul&exit; 05) 执行应用程序    例︰"control.exe appwiz.cpl" 06) 执行VBS脚本     例︰a=3:b=4:c=5:p=(a+b+c)/2:msgbox "Area=" & sqr(p*(p-a)*(p-b)*(p-c)),64,"海伦公式" 07) 数值进制间转换  (注:支持批量,支持十进制范围:1E+308~9E-324;                  二进制正/负数均采用补码表示.如十进制负数-8的                  二进制1000应为11000(也可表示为1000,在本软件                  中当二进制第一位为1时可省略符号位);十进制正                  数8的二进制1000应为01000(符号位不能省)) 08) 多种替换|转换功能   (注:支持批量\par\tab\asc\nul) 09) 状态栏便捷查看文本编码方式、文件路径、字符的各种信息 例︰字体|大小|颜色|...|编码 10) 浏览当前编辑文档所在的文件夹(注:F6) 11) 排序 12) 填充序列数      (注:支持批量\par\tab\asc\nul) 13) 字符/串拆分、合并、翻转 14) 定位匹配括号 15) 多种右键菜单     (注:鼠标中键或Shift/Alt/Ctrl+鼠标右键) 16) 便捷时间显示 17) 关联到右键打开方式 18) 便捷的几种显示模式 19) 汉字转拼音/缩写 20) 两种方式打开拖入文档 (注:请拖到[标题栏]或[状态栏],否则识别为链接;                  在[设置]中可配置拖入文档打开方式[插入/新建]) 21) 支持多种格式UTF-8, BIG5, GB2321, Unicode,Unicode big edian, Rich Text, USC-2 22) 查看密码       (扩展对所有已打开的窗口密码均有效Ctrl+D) 23) 正则表达式处理字符  例︰"\b([a-z]+) \1\b"合并多次重复单词
v1.11 (08/14/2012) 1. 增加注册年限选择。 v1.10 (06/26/2012) 1. 精简字库检索表。 2. 增加 GBK 字库输出。 3. 增加一种点阵数据存储格式(只存有效像素数据--not fixed, 不支持MBCS编码格式的中日韩), 对泰文,缅甸文等特殊语种显示非常便捷。 v1.09 (06/15/2012) 1. 增加输出 C 语言(数组) 字体格式。 V1.08 (05/17/2012) 1. 增加了两个版本(免费和试用版) 免费版 只对 16点阵有效。 试用版 对所有点阵有效,但是会缺部分字符。 2. 增加热键功能。 3. 修改了多国语言生成.h文件时,start 与 end 不匹配的bug。 4. 完善文档《GuiTool 使用说明》, 增加更多图解说明。 文档下载地址: http://ishare.iask.sina.com.cn/f/24472766.html v1.07 (05/02/2012) 1. 修改注册方式(改为文件)。 2. 增加bdf格式编码过滤功能,主要是为了支持 MTK 手机点阵字库。 3. 增加xp控件属性。 4. 增加扫描模式图解。 5. 修改了 bdf 2 bin 的一个bug。(选择输出位图时,会输出n个位图文件) 6. 修改了 BDF 文件中当字符显示宽度为0,存位图(所有字符存一张图片)失败的错误。 v1.06 (04/10/2012) 1. 增加系统字体支持,操作更简便,快捷。 枚举所有已安装系统字体,直接选择即可。 v1.05 (03/24/2012) Fontmaker(点阵字库) 1. 修正了字符对齐问题。 2. 增加了单个字符或多个字符输出成位图文件设定。 3. 完善了阿拉伯文字库(unicode 字库有效)。 4. 增加自定义字符功能(unicode 字库有效)。 Multi-language(多国语言) 1. 增加输出编码格式 (mbcs, utf16-lb, utf8)设置 2. 增加数组格式输出。 Image Manager(图像管理) 1. 该页为新增功能,支持图片图像的数据转换。主要应用在做产品logo图片方面。 V1.04 (07/16/2011) 1. 增加了一个字符串mbcs2unicode(内码转统一码)的功能。 (支持转:U16-LE, U16-BE, UTF8) V1.03 (07/05/2011) 1. 修改了 Example 中点阵字库解析源码,更加便于移植。(基本做到只需修改font_file.c 即可) 2. 修改了内码(MBCS)字库点阵信息读取的一个错误。 3. 增加了多语言支持(简中,英文),还有待完善。。。 V1.02 (07/01/2011) 1. FontMaker V2.03 a. 增加字符宽高比调节(HorR & VerR) b. 增加对*.ttc 字库的支持。 c. 增加bdf(*.bdf)文件格式转Simple Unicode编码格式的bin文件。 V1.01 (06/29/2011) 1. FontMaker V2.02 a. 增加了 Simple Unicode功能。(适合小字库) b. 增加了 “扫描方向及反显”设置。 2. Multi-Language V1.01 a. 修改了除 office 2000 外,其它不能支持的问题。 V1.00: (2007-2011) 1. 继承 FontMaker V2.01 的所有功能。 2. 增加了一个 Multi-Languge V1.00 的打包转换功能。 FontMaker 基本功能: 1.支持所有 windows 字符集:CP932(日文Shift-JIS)CP936(简体中文GBK)CP949(韩文)CP950(繁体中文 Big5),CP874(泰文),CP1250(中欧)CP1251(西里尔文),CP1252(西欧--"拉丁文I"),CP1253(希腊文), CP1254(土耳其文),CP1255(希伯来文),CP1256(阿拉伯文),CP1257(波罗的海文),CP1258(越南) 2.支持非等宽字库。 3.支持BIN,TXT,BMP,BDF 文件输出。 4.支持unicode字库输出,即可以做到在一个窗口中同时显示多国语言(文字) 5.支持单个字符编辑,预览(所见即所得)。 6.支持字库文件和输出路径记忆功能. 7. 支持从bdf格式转换自定义字库(bin文件)格式。
v1.13 (10/19/2012) + 增加 (BDF) 字体合并功能。 + 增加自动校准基线功能。 + 增加对BDF V2.2 的支持。 * 完善越南文unicode编码字库(增加扩展码和附加码) v1.12 (09/17/2012) + 增加自动升级功能(由于增加了网络下载功能,可能会被杀毒软件拦截,但请放心,绝对安全)。 + 增加usbkey注册。 + 增加字体加粗功能。 * 修改字体文件,以及输出文件路径不能保持的bug。 * 修改scanmode为Horb0~b7的bug。 * 完善多语言文本提示。 v1.11 (08/14/2012) + 增加注册年限选择。 * 修改获取机器码失败的bug。 v1.10 (06/26/2012) * 精简字库检索表。 + 增加 GBK 字库输出。 + 增加一种点阵数据存储格式(只存有效像素数据--not fixed, 不支持MBCS编码格式的中日韩), 对泰文,缅甸文等特殊语种显示非常便捷。 v1.09 (06/15/2012) + 增加输出 C 语言(数组) 字体格式。 V1.08 (05/17/2012) + 增加了两个版本(免费和试用版) 免费版 只对 16点阵有效。 试用版 对所有点阵有效,但是会缺部分字符。 + 增加热键功能。 * 修改了多国语言生成.h文件时,start 与 end 不匹配的bug。 * 完善文档《GuiTool 使用说明》, 增加更多图解说明。 文档下载地址: http://ishare.iask.sina.com.cn/f/24472766.html v1.07 (05/02/2012) * 修改注册方式(改为文件)。 + 增加bdf格式编码过滤功能,主要是为了支持 MTK 手机点阵字库。 + 增加xp控件属性。 + 增加扫描模式图解。 * 修改了 bdf 2 bin 的一个bug。(选择输出位图时,会输出n个位图文件) * 修改了 BDF 文件中当字符显示宽度为0,存位图(所有字符存一张图片)失败的错误。 v1.06 (04/10/2012) + 增加系统字体支持,操作更简便,快捷。 枚举所有已安装系统字体,直接选择即可。 v1.05 (03/24/2012) Fontmaker(点阵字库) * 修正了字符对齐问题。 + 增加了单个字符或多个字符输出成位图文件设定。 * 完善了阿拉伯文字库(unicode 字库有效)。 + 增加自定义字符功能(unicode 字库有效)。 Multi-language(多国语言) + 增加输出编码格式 (mbcs, utf16-lb, utf8)设置 + 增加数组格式输出。 Image Manager(图像管理) + 该页为新增功能,支持图片图像的数据转换。主要应用在做产品logo图片方面。 V1.04 (07/16/2011) + 增加了一个字符串mbcs2unicode(内码转统一码)的功能。 (支持转:U16-LE, U16-BE, UTF8) V1.03 (07/05/2011) * 修改了 Example 中点阵字库解析源码,更加便于移植。(基本做到只需修改font_file.c 即可) * 修改了内码(MBCS)字库点阵信息读取的一个错误。 + 增加了多语言支持(简中,英文),还有待完善。。。 V1.02 (07/01/2011) 1. FontMaker V2.03 + 增加字符宽高比调节(HorR & VerR) + 增加对*.ttc 字库的支持。 + 增加bdf(*.bdf)文件格式转Simple Unicode编码格式的bin文件。 V1.01 (06/29/2011) 1. FontMaker V2.02 + 增加了 Simple Unicode功能。(适合小字库) + 增加了 “扫描方向及反显”设置。 2. Multi-Language V1.01 * 修改了除 office 2000 外,其它不能支持的问题。 V1.00: (2007-2011) * 继承 FontMaker V2.01 的所有功能。 + 增加了一个 Multi-Languge V1.00 的打包转换功能。 FontMaker 基本功能: 1.支持所有 windows 字符集:CP932(日文Shift-JIS)CP936(简体中文GBK)CP949(韩文)CP950(繁体中文 Big5),CP874(泰文),CP1250(中欧)CP1251(西里尔文),CP1252(西欧--"拉丁文I"),CP1253(希腊文), CP1254(土耳其文),CP1255(希伯来文),CP1256(阿拉伯文),CP1257(波罗的海文),CP1258(越南) 2.支持非等宽字库。 3.支持BIN,TXT,BMP,BDF 文件输出。 4.支持unicode字库输出,即可以做到在一个窗口中同时显示多国语言(文字) 5.支持单个字符编辑,预览(所见即所得)。 6.支持字库文件和输出路径记忆功能. 7. 支持从bdf格式转换自定义字库(bin文件)格式。
Lephone Loczlize Plus 1.06 中文注册版是一个本地化工具,主要用于非资源格式的本地化工作,支持的种类包括非资源格式的 C 编译的程序中的 ASCII 字符串和 UniCode 字符串、非资源格式的 Delphi(C++ Builder)编译的程序的字符串、VB 编译的程序的字符串、文本格式的字符串等的提取及替换。同时它还拥有方便的版本升级功能、字典处理功能,使您在翻译新版本时事半功倍。本软件提供英文、简体中文和繁体中文三种语言选择,并且您也可以很方便的添加对其它语言的支持。 Win98/Me/2000/XP/Vista 可以直接运行本软件,Win95/NT4 需要安装 VB6 运行库。你可以在微软的站点下载它。 本软件主要用于非资源格式的本地化工作,对于资源格式的本地化工作,虽然也可以使用本工具处理,但因为无法做到大于源字串的替换,所以推荐使用其它一些工具(如 Visual C++、ResHacker 等)处理。 本软件的每一个界面上都有一段说明,在使用其功能之前,请先阅读这些说明。 对于所有的功能,其中所说的“对照文件”和“字典文件”都忽略空行,所以可以随意添加空行,不过只有空格的行不被视为空行,而“对照文件”中的其它行以如下格式重复: 偏移量:源字串 修改后的字串 “偏移量”用十进制表示,一般应由程序自行填写,用户不要再做修改;“源字串”也一样由程序自行填写,用户也不要再做修改。 而“字典文件”中的其它行以如下格式重复: 源字串 修改后的字串 同样的,“源字串”也由程序自行填写,用户不要再做修改。 另外,所有对可执行文件进行的替换工作,都不能进行长于源字串的替换,如果修改后的字串长于源字串,本程序将自动剪裁以便和源字串长度相同。如果短于源字串,将会以十六进制数“00”或空格(在“替换字串”界面上选择“多余补空格”)填充空余。 对于 VB 和 Delphi 编译的程序,因为有字串长度计数器,所以使用其专用功能不仅能提高查找的准确性,而且替换后的程序的兼容性也会更好,故推荐对于它们使用其专用的查找和替换功能。 本工具约定,VB 格式的 UniCode 的对照文件的扩展名是“.txt”,Delphi 格式的 ASCII 对照文件的扩展名是“.d.txt”, UniCode 格式的对照文件的扩展名是“.u.txt”,而 ASCII 格式的对照文件的扩展名是“.a.txt”。这四种对照文件的格式完全相同。程序会根据所选文件名判断它的类型,虽然用户仍然可以更改类型,不过还是建议使用约定的扩展名。 因为本程序在替换的时候做源字串的检测,所以选错类型一般不会造成不可挽回的后果,不过还是慎重为好。 对于 UniCode 和 ASCII 的查找,并没有前缀作为判断标志,所以如果一个字串的实际长度大于所选的最大长度,则采取右截取的方式。比如实际字串“Text”,而最大长度选择“3”,则提取此字串为“ext”。 对于内含回车换行的字串,使用替换方式进行处理,如下: 对于内含回车换行的字串,使用替换方式进行处理,如下: 回车 替换成 \r 换行 替换成 \n \ 替换成 \\ ” 替换成 \” Tab 替换成 \t “翻译新版本”时,既可以使用“字典文件”,也可以使用“对照文件”。而“对照文件”可以使用“偏移量方式”的“分割对照文件”功能得到“字典文件”。 本程序查找时没有进度条指示进度,不过用户可以预估查找时间。在 P200 上的测试数据如下:查找 UniCode (包括 VB)的速度是 1MB/s ,而查找 ASCII (包括 Delhpi)的速度是 0.5MB/s 。 对于“清除预定义项”,用户可以自行修改其同目录下的“PDef.dat”文件。而对于它,可以使用“翻译项方式”的分割方式分割对照文件,把得到的“.2”文件中想添加的项加入“PDef.dat”即可。不过就我的测试而言,“清除预定义项”的功能对于不特定软件的效果并不是很显著,当然了,对于特定的软件(把不需要的项加入了“PDef.dat”的)效果还是不错的。 对于 INI 文件需要注意的是,程序只把第一个字符是“;”的行作为注释,如果有如“属性=值;注释”这样的行,将把“值;注释”当作“值”处理。 繁简用语替换时,如果用户的使用界面是简体中文,则使用 GBK 内码,如果用户的使用界面是繁体中文,则使用 BIG5 内码,分别对应不同的字典文件,如果本软件提供的词汇量不够的话,可以自行添加。此功能不进行内码转换,所以如果需要转换内码的话,请配合使用其它软件。在字典中请尽量使用长的词汇,这样可以增加准确性。我测得的替换速度约为 50KB/s (字典文件过大时也会对速度造成影响)。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧