Board logo

标题: 纯DOS下如何计算并键入汉字的内码以进入中文文件夹 [打印本页]

作者: king603     时间: 2005-11-15 14:39    标题: 纯DOS下如何计算并键入汉字的内码以进入中文文件夹

请问,在纯DOS环境下,如何打开中文文件名的文件夹?(最好不用借助软件或建立批处理文件)

在纯DOS下,中文是不能显示的(显示得像乱码一样),我以前问过老师如何在纯DOS下进入“D:\操作系统”目录,他竟然将“操作系统”四个字 用笔算了出来了!结果是八组三位数(178、217、215、247、207、181、205、179),每两组数为一个字,在纯DOS下把“乱码”形式的“操作系统”四字打了出来(方法是按住“Alt”键再按小键盘的数字键再松开“Alt”键,一次为半个字,打了八次就打完了这四个字!)

我想问谁知道这八组数是怎样算出来的。


——————————————  willsort 版务记录  ——————————————
修改原标题:DOS问题请教。
原主题作者在通知发出三日后仍未申诉或修改,因此由版主修改并进行积分处罚
处罚包括:扣除因发表该主题而奖励的3点积分,扣除标题违规惩罚性1点积分
——————————————  willsort 版务记录  ——————————————


[ Last edited by willsort on 2005-11-30 at 13:27 ]
作者: dato     时间: 2005-11-15 16:15
真的哦,不知道用的是什么编码,最好算法简单点,真的很不错。

可惜上屏的仍然是乱码,只能在中文系统下显示
作者: willsort     时间: 2005-11-15 16:43
Re king603:

      DOS下的中文系统一般使用 GB2312 字符集国标编码,使用 GBK 或者 CJK 等大字符集的汉字系统的极少。而在 GB 码中,汉字分为一级汉字和二级汉字,一级按拼音顺序排列,二级按照笔画和笔画数排列。虽然有一定规律,但是实际计算时,必须对编码表有较强的记忆,一般不建议采用。

      而在 DOS 下不使用汉字系统进入中文名目录(或者说打开开中文文件名的文件夹)早已有了许多方案,提供给你一个链接

老病新药:非中文环境下进入中文目录
http://www.cn-dos.net/forum/viewthread.php?tid=16819

      当然,现有的方案都还无法完全做到,从许多中文名中辨认出某个具体中文名并进入,比如随机给出一个环境,包含许多同等长度的中文名目录,但不告知是哪些中文名,而只要求进入一个名为“目标目录”的目录,这是很难实现的。

[ Last edited by willsort on 2005-11-30 at 13:29 ]
作者: JonePeng     时间: 2005-11-15 19:54


  Quote:
Originally posted by king603 at 2005-11-15 14:39:
我想问谁知道这八组数是怎样算出来的。

可以通过查询ASCII字符表来取得那些“乱码”的字符值。DN(DOS Navigator)和QB/QBasic的帮助文件都有ASCII表。至于怎么把中文字符的每个ASCII码值算出来,可以编一个小程序将ASCII字符转换为数值。

如果不借助任何工具的话,那只能靠死记硬背那些字符的ASCII码值咯 -_-
作者: dato     时间: 2005-11-15 20:25
大家能举个换算例子吗

比如 系 这个字是怎么换的
作者: king603     时间: 2005-11-16 01:36
对呀,最好能举几个例,让我们大家可以学习学习!
作者: JonePeng     时间: 2005-11-16 21:42
以QB为例:
a$ = "系"
PRINT ASC(LEFT$(a$, 1)); ASC(RIGHT$(a$, 1))
作者: king603     时间: 2005-11-16 23:13
如图:



这八组十进制数是不是有公式可以算出来的?
作者: JonePeng     时间: 2005-11-17 19:17
每个字符是对应一个ASCII代码的,所以公式就是将ASCII字符转为代码。
作者: king603     时间: 2005-11-17 19:34
怎样转为代码?(步骤如何?)
请赐教...

谢!
作者: king603     时间: 2005-11-22 13:58
无人知晓?
作者: JonePeng     时间: 2005-11-22 19:53
参考:
http://www.cn-dos.net/forum/viewthread.php?tid=17797
作者: king603     时间: 2005-11-22 21:09
好像有点关系哦!不过还是不太懂~~~~~~(我太笨~~?)

如:“操”=“178 217”中,若结果答案是“178 217”,那么,已知条件是不是除了“操”字外还有其它讯息作“已知条件”的?那些所谓隐含的“已知条件”又是什么呢?(我好像问得太深奥了~~~),还是,这个“178 217”这个结果答案只能用电脑算而根本不可能以人手算了来的?
作者: plz45     时间: 2005-11-23 14:19    标题: 晕,标题超长,白打了。


作者: plz45     时间: 2005-11-23 14:24
http://www.philosophyol.com/bbs/ ... rdID=27&id=3394
请看上面的区位表,国家给每个汉字都规定了一个区位码:共2个数字,前为区,后为位(废话?)。你要算出想要的数字的话,先到表里找到一个字,比如“藏”,为18区,56位,再分别加上160,得到178,216就可以了,这其实是汉字的机内码。
作者: plz45     时间: 2005-11-23 14:26
建议你读读这个:
http://www.xxinfo.ha.cn/xwsk/wz/sj/678.html
作者: king603     时间: 2005-11-24 02:05
哗!有那么多要死记的东东!难道我以前那个老师全部“区位编码表”记得牢牢的?

但是,按你那么说,如果记得那个表的话,区区“操作系统”四个字,很简单不用一分钟就可以算好了,可当然我亲见看着他算了半个多小时,事后他给了我这个答案后,我问他怎样算他说很难的没跟我说,他走后我捡起他那张草稿纸,写了很多组十六进制与二进制的数,还有十进制的,零乱不堪~~~(汗~~~)

如果他记得区位码表则不用算那么久,如果他不记得那个表,真不知当时他是什么葫芦买什么药~~~~