现在我得到一个字符串
如:”=?gbk?Q?=B7=D6=C0=E0=CD=B3=BC=C61.doc?=“
用System.Text.Encoding.GetEncoding("gb2312").GetString(Convert.FromBase64String(attname));
为什么转化不成字符串呢?该怎么调试啊,谢谢。。

解决方案 »

  1.   

    补充
    错误提示为“base-64 字符串中的无效字符”
      

  2.   

    补充
    错误提示为:“base-64 字符串中无效字符”
      

  3.   

    怎么还加这么一步Convert.FromBase64String(attname)
    =?gbk?Q?=B7=D6=C0=E0=CD=B3=BC=C61.doc?= 
    那你也要知道你这个字符串是什么编码的啊
    要不你枚举所有的代码页挨个解
      

  4.   

    Convert.FromBase64String   方法   
      要求:   
        
        
      FormatException   
      value   的长度(忽略空白字符)不是   0   或   4   的倍数。     
        
      -   或   -   
        
      value   的格式无效。value   包含一个非   base   64   字符、两个以上的填充字符或者在填充字符中包含非空白字符。   
          
        
      备注   
        
      value   由基   64   数字、空白字符和尾随填充字符组成。从零开始以升序排列的以   64   为基的数字为大写字符“A”到“Z”、小写字符“a”到“z”、数字“0”到“9”以及符号“+”和“/”。   
        
      空白字符及其   Unicode   名称和十六进制码位为:制表符(CHARACTER   TABULATION,U+0009)、换行符(LINE   FEED,U+000A)、回车符(CARRIAGE   RETURN,U+000D)和空格符(SPACE,U+0020)。value   中可以出现任意数目的空白字符,因为所有空白字符都将被忽略。   
        
      无值字符“=”用于尾部的空白。value   的末尾可以包含零个、一个或两个填充字符。
      

  5.   

    楼上2位说的什么意思?
    如:”=?gbk?Q?=B7=D6=C0=E0=CD=B3=BC=C61.doc?=“ 
    用System.Text.Encoding.GetEncoding("gb2312").GetString(Convert.FromBase64String(attname)); 
    就是 
    attname="=?gbk?Q?=B7=D6=C0=E0=CD=B3=BC=C61.doc?=" 
    System.Text.Encoding.GetEncoding("gb2312").GetString(Convert.FromBase64String(attname)); 
    错误提示为“base-64 字符串中的无效字符”
     该怎么弄?改那里?
      

  6.   

    楼主的attname字符串变量不是合法的BASE64串,因为在BASE64码表中不包含"."和"?"
    所以语句:System.Text.Encoding.GetEncoding("gb2312").GetString(Convert.FromBase64String(attname)); 在Convert.FromBase64String(attname)的时候就会出错。
    楼主想要正解就要先弄清楚attname是以什么编码的字符串。