本人最近解析一个ansi的中英文混合固定长度格式文件,用steamreader(filename,system.text.encoding.ansi)打开,逐行读出,每行长度一致,取其中的汉字,显示的却是????.
用streamreader(filename,system.text.encoding.getencoding("gb2312")打开 ,逐行读出,取其中的汉字,汉字显示正确,但每行长度却不一致了.
请教一下,有什么办法能将用第一种打开方式读出的每行字符串,再转换成"gb2312"

解决方案 »

  1.   

    你先用winhex等工具来看看源文件是否是gb2312编码格式。
      

  2.   

    ANSI最多只能有 256 个字符和标点符号代码,只能保存字母,何来中英混合呢?对于不同的编码,可以使用以下API进行转换:
    WideCharToMultiByte
    MultiByteToWideChar
      

  3.   

    谢谢各位.我再解释一下:
    用记事本打开过,是ansi格式
    至于长度吗,用ansi打开时,英文为一个字节,汉字为两个字节,
    每行总长度一致.各个字段的位置也是固定的,只是每一个汉字显示为两问号??
    用gb2312打开时,英文为一个字节,汉字也视为一个字节,所以每行长度
    是变化的.同时,再提问一个问题,也是同汉字有关的,希望各位大侠不吝赐教
    在使用access数据库时,为什么字段中的汉字也只占一个字节的位置?
    当汉字占两个字节的位置时,格式是有规律的;一个字节就无法解析了.