通过文件头分析,可以知道FFFE是Unicode,EFBBBF是utf-8。但 big5 或 gb2312 或 shift_jis 都没有文件头,怎样获得编码呢?要分析文本中的文字?

解决方案 »

  1.   

    API
     istextunicode
     isle?????? 系列
      

  2.   

    对于系统来说,对于gb2312和big5是通过系统的本地语言来自动转换的。
    如果你的本地语言用的是gb2312,又想解码big5的数据,那就不能依靠自动识别,
    需要操作者指定语言编码才可以。所以,在做多国语言支持的时候,没人会用这种编码,
    都是用 Unicode 或 utf-8 编码的,如果有更好的解决方案,相信IE也不会需要定义HTTP头
    来标记使用的语言编码,也不需要留个菜单让用户自己选择语言编码了。
      

  3.   

    GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。   01-09区为特殊符号。   16-55区为一级汉字,按拼音排序。   56-87区为二级汉字,按部首/笔画排序。   10-15区及88-94区则未有编码。   举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。
      

  4.   

    字节结构
      在使用GB2312的程序中,通常采用EUC储存方法,以便兼容于ASCII。浏览器编码表上的“GB2312”,通常都是指“EUC-CN”表示法。   每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”)。   “高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上 0xA0)。 由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是 72*94=6768。其中有5个空位是D7FA-D7FE。   例如“啊”字在大多数程序中,会以两个字节,0xB0(第一个字节) 0xA1(第二个字节)储存。区位码=区字节+位字节(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。