`
freesoftman
  • 浏览: 313951 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

DBCS

阅读更多

来自于百度百科:

 

 ========================================================================

 DBCS:double-byte character set

  最初的128个代码是ASCII,较高的128个代码中的某些总是跟随著第二个位元组。这两个位元组一起(称作首位元组和跟随位元组)定义一个字元,通常是一个复杂的象形文字。

  虽然中文、日文和韩文共用一些相同的象形文字,但显然这三种语言是不同的,而且经常是同一个象形文字在三种不同的语言中代表三件不同的事。Windows支援四个不同的双位元组字元集:内码表932(日文)、936(简体中文)、949(韩语)和950(繁体汉字)。只有为这些国家(地区)生产的Windows版本才支援DBCS。明白Unicode和DBCS之间的区别很重要。Unicode使用(特别在C程式设计语言环境里)「宽字元集」。「Unicode中的每个字元都是16位元宽而不是8位元宽。」在Unicode中,没有单单使用8位元数值的意义存在。相比之下,在双位元组字元集中我们仍然处理8位元数值。有些位元组自身定义字元,而某些位元组则显示需要和另一个位元组共同定义一个字元。

  处理DBCS字串非常杂乱,但是处理Unicode文字则像处理有秩序的文字。您也许会高兴地知道前128个Unicode字元(16位元代码从0x0000到0x007F)就是ASCII字元,而接下来的128个Unicode字元(代码从0x0080到0x00FF)是ISO 8859-1对ASCII的扩展。Unicode中不同部分的字元都同样基於现有的标准。这是为了便於转换。希腊字母表使用从0x0370到0x03FF的代码,斯拉夫语使用从0x0400到0x04FF的代码,美国使用从0x0530到0x058F的代码,希伯来语使用从0x0590到0x05FF的代码。中国、日本和韩国的象形文字(总称为CJK)占用了从0x3000到0x9FFF的代码。

 

下面的来自于一个blog

http://hi.baidu.com/dp282074009/blog/item/77d06bece8e2f83b269791e4.html

================================================================

首先DBCS是亚洲的字符集,包含了ANSI,ANSI也就是ASCII值为0-255之间的字符,当字符为ANSI时,存放于文件中占用的是一个字节。如果是非ANSI的呢,则占用两字节。用VB的ASC函数可以很容易得到一个字符的DBCS值(或是说ANSI值吧)
  假如一个字符得到的DBCS值为&H1234,当然,这个值是转换成了十六进制的,因为对于磁盘存放来说,一般使用位(BIT),即二进制存放,而显示字节呢用十六进制显示则非常直观。存放在文件中即"12 34"(这是用十六进制文本编辑器中查看到的形式)。而UNICODE是世界性的字符集,几乎包含了世界上的所有字符,每个字符都有一个单一的UNICODE值。UNICODE值也是占用两个字节的。但不同的是它虽然也包含了标准的ANSI字符值,但是ANSI字符只占用一个字节,UNICODE会自动在ANSI值后加入一个值为0的字节。比如说一个ANSI值为&h45的字符,以UNICODE形式存放则为"4500"。至于如何用VB得到一个字符的UNICODE值,ASCW函数可以轻松搞定。但是普通的非ANSI字符以UNICODE形式时则是从右存到左的。比如一个值为&H1234的字符,存为UNICODE时则为"34 12"
  知道了这些有什么用呢?UNICODE的意义在于能让不同环境下的操作系统识别。比如说吧,你在中文的操作系统下使用记事本写了一篇文本文章。但你要拿到别的环境下的WIN2K(之所以选WIN2K,是因为WIN2K支持UNICODE,否则用WIN98只能用外接中文平台才能查看)下查看(比如美国的电脑,操作系统为英文,代码页也是美国(WIN2K有设置代码页)),即使该电脑已经安装了中文字体,即使用WORD这样的编辑软件打开也肯定是乱码一堆。这是为什么呢?因为英文的WIN2K操作系统只能识别UNICODE呀!并不能识别咱们亚洲的DBCS码呀!
  解决方法只要你把它转换为UNICODE码存放就OK了!像Utrla Edit就能转换。WIN2K里也有代码转换器可以,而WIN2K下的记事本则可以用另chun为UNICODE码。如果你使用的是WIN9X,则可以自己用VB解决了。UNICODE码存放的文本文件与普通的文本文件不同之处仅仅是文件头加了"FF FE"而已。其他的则是代码值不同。只要转换了字符的代码,并在文件前加上"FF FE"这两个字节,就是把这篇中文文章保存为UNICODE格式了!转换成UNICODE格式后,英文操作系统的机器只要用WORD打开你的文件就能查看了!(为什么用WORD是因为它有字体识别功能。普通记事本只把文字链接到系统字体上,而英文系统的默认字体可不是不包含中文的哟!当然就显示不出来啦)EXE等可执行文件的字串存放格式也差不多都是这样的。不过VB编写的程序有点意思,有些字符以DBCS存放,有些则是以UNICODE存放的。而其他工具编译的文件则大多为DBCS单一类型存放。DBCS存放的字符修改起来非常容易。使用UE这样的十六进制文本编辑器查找要修改的字串,只要把“查找ASCII”打上勾就OK了。但是用UNICODE存放的就不好这么找了。这下我们可以用VB来解决啦!前面已经提到,像一个值为&h1234的字符存放在文件中为"34 12"
那么我们用VB的ASCW函数得到它的十六进制值,再把值反过来不就可以了吗?反过来后再把这个值拿到UE中去搜索,不要把“查找ASCII”选上,这下我们要修改的文字就能找到了!再用VB把要替换进去的文字也转成相同的形式,再到UE里对照相应的值修改即可。
一般来说,VB里事先在开发环境下存放好的字符,如LABEL中的字符,就是以DBCS存放的。而硬编码在EXE中的文字。比如:
MSGBOX "这是编译在代码中的文字"
其中这几个中文字符就是以UNICODE形式存放的。还有资源文件中的字串资源亦是如此。
这样一来,即使软件作者硬编码在EXE中的文字我们都可以随意修改喽。HOHO
希望我写这篇文章对大家能有所帮助。
附:理论上程序使用UNICODE能不受操作系统环境影响,(WINDOWS的帮助上亦是如此之说)。但实际上因为受到字体链接等环境因素影响,并不能正常的显示出文字。要使软件国际化还是建议使用资源文件,多建几个不同代码页的字串表。这样一来方便以后修改,二来对于EXE程序的资源占用也有好处。

分享到:
评论

相关推荐

    codepage(DBCS码与Unicode码对应表)

    DBCS码与Unicode码对应表。如果你知道某个字符(中日韩)的DBCS码,就可以通过此表查找相对应的Unicode码。

    中间件DBCS在客票系统中的应用.pdf

    中间件DBCS在客票系统中的应用.pdf

    小游戏源码 dbcs (微信公众号小游戏).rar

    微信公众号小游戏源码

    au3反编译源码

    au3反编译源码 myAut2Exe - The Open Source AutoIT Script Decompiler 2.9 ======================================================== *New* full support for AutoIT v3.2.6++ :) ......This program is for ...

    数据库的运行与维护.doc

    对于一个给定的DBMS,不一定就有名为"DBCS"或"DBSS"的系统,在这里它们是 一般性术语,但绝大多数DBMS都有相当的功能部件。在网络或分布式环境下,还需要数 据通信管理系统(DCMS)的支持。 图1-1 数据库系统运行...

    DDS参考手册中文版

    加到DBCS设备中一些新的显示文件键字(具有调用日语DDS的能力): 下面键字加到显示文件中: GRDATR(坐标属性) GRDBOX(坐标框) GRDCLR(坐标清除) GRDLIN(坐标行) GRDRCD(坐标记录) 这些键...

    AS-400 CL编程汇总

    6.8 在CL程序中使用DBCS数据 6.9 样板CL程序 6.10 从带或软盘上装入和运行应用程序 第七章 定义信息 7.1 生成一个信息文件 7.2 往文件中加一个信息 7.3 系统信息文件检索 7.4 信息队列类型 第八章 处理信息 8.1 往一...

    C++字符串完全指南.doc

    1.2. 字符串基础 - ASCII, DBCS, Unicode 2 1.3. 字符串的存储 3 1.4. 字符串处理函数 3 1.5. C字符串函数大全 3 1.6. 字符串遍历 7 1.7. 再谈strxxx() 与_mbsxxx() 8 1.8. Win32 API中的MBCS 和 Unicode的二种字符...

    OS/400 CL程序设计文档

    6.8 在CL程序中使用DBCS数据 6.9 样板CL程序 6.10 从带或软盘上装入和运行应用程序 第七章 定义信息 7.1 生成一个信息文件 7.2 往文件中加一个信息 7.3 系统信息文件检索 7.4 信息队列类型 第八章 处理信息 8.1 往一...

    DynaZip.MAX.v5.00.02

    如果你想开发应用服务于许多国际市场,用DBCS你的应用将更加用易管理文件名,消息等。 如果你需要DLL,VCL或静态库接口... DynaZip MAX--最完全和可靠的数据压缩开发工具包 不管你用和种Windows编程语言,DynaZip ...

    nicesearch 1.6

    NiceSearch是超強的內文與檔案搜尋程式,採用獨特的多執行緒工作,讓蒐尋檔案的速度更快更準確。NiceSearch最特別的地方在於可將搜尋結果存成歷史檔,當使用者第二次尋找相同資料時,...◎支援中文字(DBCS)搜尋。

    VB进程间通讯演示

    在VB里使用内存文件映射技术需要大量使用CopyMemory,还要处理好DBCS和UNICODE的关系,程序虽然已经调试通过,还需要大家一起改进。 2002年2月18日更新: 加入了用DLL共享节和VB回调函数的代码,可以说 这是这...

    DBCs:我所有的JDBCS都存储在哪里

    DBC 我所有的JDBCS都存储在哪里

    数据库服务器字符集更改步骤

    853 ZHS16DBCS 355 860 ZHT32EUC 35c 861 ZHT32SOPS 35d 862 ZHT16DBT 35e 863 ZHT32TRIS 35f 864 ZHT16DBCS 360 865 ZHT16BIG5 361 866 ZHT16CCDC 362 867 ZHT16MSWIN950 363 868 ZHT16HKSCS 364 870 AL...

    VC++6.0核心编程源码.rar

    第一部分 程序员必读 第一章 对程序错误的处理 在我们开始介绍Microsoft Windows应该提供的许多特性之前,我们首先必须了解Windows的各个函数是如何进行错误处理的。 当你调用一个Windows函数时,它首先要检验你...

    Delphi7.1 Update

    Delphi 7.1 Update Release Notes=======================================================This file contains important supplemental and late-breakinginformation that may not appear in the main ...

    winrar3.7 Beta8

    纠正在 Windows 9x/Me 中外壳扩展的 DBCS 编码(日语, 汉语, 等。)的支持。 <br> 3. 纠正一个从超过 4 GB 的 UDF ISO 映象文件中解压文件的错误。 <br> 版本 3.70 beta 3 <br> 1. WinRAR 设置可以在...

    WPTools.v6.29.1.Pro

    ******************************************* ************ WPTOOLS 6 History ************ ... Ziersch and **** **** WPCubed GmbH, Munich, Germany ******** ******************************************* ...

    C++类型转换

    LPCTSTR 32-bit指针,指向一个常数字符串,此字符串可移植到Unicode和DBCS(双字节字集) LPTSTR 32-bit指针,指向一个字符串,此字符串可移植到Unicode和DBCS(双字节字集) LPCSTR 32-bit指针,指向一个常数...

Global site tag (gtag.js) - Google Analytics