来自于百度百科:
========================================================================
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码对应表,以及它们在中日韩(CJK)字符编码中的作用。 DBCS,全称Double-Byte Character Set,双字节字符集,是一种用于表示东亚语言如中文、日文、韩文...
--- dbcs.zipHTML5小游戏【dbcs逗比测试小游戏】游戏源码分享下载 --- dbcs.zipHTML5小游戏【dbcs逗比测试小游戏】游戏源码分享下载 --- dbcs.zipHTML5小游戏【dbcs逗比测试小游戏】游戏源码分享下载 --- dbcs....
中间件DBCS在客票系统中的应用.pdf
微信公众号小游戏源码
在Java编程环境中,数据库连接(Database Connections,简称DBCs)是通过Java Database Connectivity(JDBC)API来管理和处理的。JDBC提供了一种标准的方法,让Java程序能够与各种关系型数据库进行交互。当我们谈论...
au3反编译源码 myAut2Exe - The Open Source AutoIT Script Decompiler 2.9 ======================================================== *New* full support for AutoIT v3.2.6++ :) ......This program is for ...
本文档《字符编码的转换》主要关注C++环境下的字符编码,包括ASCII、DBCS(Double-Byte Character Set)和Unicode这三种主要的字符编码格式,以及与之相关的字符串类型和转换方法。 ASCII编码是最基础的单字节字符...
首先,书中提到了三种主要的字符编码格式:ASCII、DBCS(Double-Byte Character Set)和Unicode。ASCII编码是最基础的单字节字符集,包含了7位的拉丁字母、数字和其他基本符号,以0作为结束标识。DBCS主要用于东亚和...
在这个领域中,有多种编码方式,其中最常用的有ASCII、DBCS和UNICODE。 ASCII是一种 oldest character encoding standard,仅支持英文字符,每个字符占用8位。DBCS(Double Byte Character Set)是Win9x支持的字符...
在DBCS中,某些字节作为领先字节(Leading Byte)指示接下来的字节组成一个双字节字符,而尾随字节(Trail Byte)则跟随领先字节。DBCS字符串同样以单字节的0作为结束标志。 3. Win32 API的兼容性: 为了支持Ansi和...
下载快,安装方便,适合在没有安装Excel的网吧里,网友又需要用Word的人,我也是有时在网吧里想用Excel但机子上又没有,上网翻呀找呀,都太大了下载慢安装也慢,后来找到了这个,就共享出来,大家分享......
本文将深入探讨三种主要的字符编码类型:ASCII、DBCS(Double-Byte Character Set,通常指的是多字节字符集)以及Unicode,它们在Win32环境下各自的特点和用途。 首先,ASCII编码是最基础的单字节字符集(SBCS),...
DBCS主要用于表示亚洲语言,如中文、日文和韩文等,这些语言的字符集远超过ASCII字符集的256个字符。在DBCS中,ASCII字符(值为0-255)仍然占据一个字节,但非ASCII字符则占用两个字节。例如,一个DBCS值为&H1234的...
本文将详细介绍Win32 API中所涉及的字符编码,包括ASCII、DBCS(双字节字符集)、Unicode等编码方式及其在编程实践中的应用。 #### 二、字符基础—ASCII、DBCS、Unicode **1. ASCII (单字节字符集)** - **定义**:...
"DBCS Exchange"(EW12_DBCS_Exchange.pdf)和"DBCS Check"(EW11_DBCS_Check.pdf)涉及到双字节字符集(DBCS)的数据处理,这对于支持非ASCII字符集(如中文、日文等)的环境特别重要。这些文件可能解释了如何在AS/...
对于一个给定的DBMS,不一定就有名为"DBCS"或"DBSS"的系统,在这里它们是 一般性术语,但绝大多数DBMS都有相当的功能部件。在网络或分布式环境下,还需要数 据通信管理系统(DCMS)的支持。 图1-1 数据库系统运行...
本文档主要介绍了几种常见的字符集和字符编码,包括ASCII、DBCS、GB2312、GBK、GB18030、BIG5以及UCS和Unicode。 1. ASCII字符集和编码: ASCII(美国信息交换标准代码)是最基础的字符编码,它包含了7位的字符编码...