montaque

小碗喝酒,小口吃肉

博客园 首页 新随笔 联系 订阅 管理
今天在csdn看了一篇帖子,说他的xml文件,encoding是gbk 或者说是gb13000, 最后去读取这个文件时候,被告知不支持该字符集.

今天有空,稍微收集了一些这些字符集信息.

目前在.net 中,对中文字符标准,只支持两种: gb2312,gb18030.

如果你在程序中指定以一个编码写文件的话一般都是类似的代码,比如:

        Dim messageToDisplay = "hello,你好"
        Dim fs As New FileStream("d:\\gb2312.txt", FileMode.Create)
        Dim sw As New StreamWriter(fs, System.Text.Encoding.GetEncoding("gb2312"))
        sw.Write(messageToDisplay)
        sw.Close()
        fs.Close()

当然你还可以用类似的代码来测试.net 支持那些字符集

        For i As Integer = 0 To 65536
            Try
                sw = New StreamWriter(fs, System.Text.Encoding.GetEncoding("BIG" & i))
                Console.WriteLine(i)
            Catch ex As Exception
            End Try
        Next
:)

关于这两个字符集,首先都是个国家标准,所谓国家标准就是要求中文的应用程序强制执行.所以.net 是支持最新的gb18030 这个字符集,而对于中间的过渡产品gbk(gb13000)不作支持.


关于 gb2312, 也叫gb2312-1980, 是全球广泛使用的一个字符集,由于历史比较早,所有受众面也最大.

GB2312或GB2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集--基本集》,由中国国家标准总局发布, 1981年5月1日实施。GB2312编码通行于大陆;新加坡等地也采用此编码。几乎所有的中文系统和国际化的软件都支持GB2312。

GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄罗斯语西里尔字母在内的682个全形字符。

GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖99.75%的使用频率。

对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。


接下来就是比较新的gb18030

    *  GB18030 也是对 GB2312 的扩展,其编码长度由 2 个字节变为 1~4 个字节
          o 单字节,其值从 0 到 0x7F。
          o 双字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x40 到 0xFE(不包括 0x7F )。
          o 四字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x30 到 0x39,第三个字节的值从 0x81 到 0xFE ,第四个字节的值从 0x30 到 0x39 。

是以保持 GB2312/GBK 反向兼容的條件下,加入 4-byte 部份,讓 GB18030 可以

完全地 一對一 映射到 Unicode U+0000..U+10FFFF,是一個「一勞永逸」的方案。






posted on 2005-02-28 12:10  montaque  阅读(1714)  评论(0编辑  收藏  举报