今天在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,是一個「一勞永逸」的方案。
今天有空,稍微收集了一些这些字符集信息.
目前在.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,是一個「一勞永逸」的方案。