Encoding 如何从BASE64STRING获取编码

Encoding 如何从BASE64STRING获取编码,encoding,base64,Encoding,Base64,下面是我的问题的代码描述: 我需要找到这个文件的编码,但不是现在 string FilePath = @"C:\01 New.txt"; System.IO.FileStream inFile = new System.IO.FileStream(FilePath, System.IO.FileMode.Open,System.IO.FileAccess.Read); byte[] binaryData = new Byte[inFile.Length]; long bytesRead = in

下面是我的问题的代码描述:

  • 我需要找到这个文件的编码,但不是现在

    string FilePath = @"C:\01 New.txt";
    System.IO.FileStream inFile = new System.IO.FileStream(FilePath, System.IO.FileMode.Open,System.IO.FileAccess.Read);
    byte[] binaryData = new Byte[inFile.Length];
    long bytesRead = inFile.Read(binaryData, 0, (int)inFile.Length);
    inFile.Close();
    string base64String = System.Convert.ToBase64String(binaryData, 0, binaryData.Length);// Converting ToBase64String
    Console.WriteLine("base64String is " + base64String);
    
    请假设上面的过程是由其他程序完成的,它只返回“base64String”。现在我需要好好读一读

  • 为此,我需要base64String的“编码”:

    byte[] s = Convert.FromBase64String(base64String);
    switch (GET_ENCODING(base64String))
    {
      case "ASCII":
        Console.WriteLine("ASCII text is " + Encoding.ASCII.GetString(s).Trim()); break;
      case "Default":
        Console.WriteLine("Default text is " + Encoding.Default.GetString(s).Trim()); break;
      case "UTF7":
        Console.WriteLine("UTF7 text is " + Encoding.UTF7.GetString(s).Trim()); break;
      case "UTF8":
        Console.WriteLine("UTF8 text is " + Encoding.UTF8.GetString(s).Trim()); break;
      case "BigEndianUnicode":
        Console.WriteLine("BigEndianUnicode " + Encoding.BigEndianUnicode.GetString(s).Trim()); break;
       case "UTF32":
         Console.WriteLine("UTF32 text is " + Encoding.UTF32.GetString(s).Trim()); break;
       default:
         break;
      }
    

  • Base64编码与问题无关,因为您知道这是源编码。基本上,您有一个字节流可以编码为文本,而不知道目标编码或字符集。这意味着你的文字真的被破坏了;正如@deceze所评论的,最好的事情是确保编码是正确的

    如果文本为XML、HTML或MIME,则可以通过两个步骤完成此操作:

  • 编码为ASCII/UTF-8,然后解析/搜索值为“UTF-8”、“ISO-8859-1”等的
    charset
    属性
  • 编码到步骤1中标识的字符集
  • 否则,您将需要一种启发式方法来检测编码。这不是100%可靠的。请参阅以下链接:


    编辑:可以将XML/HTML编码为ASCII/UTF-8以外的内容;这对于MIME来说可能也是如此。这意味着即使对于这些文件类型,也需要启发式方法,除非您知道编码只能是前128个字符相同的ASCII/UTF-8/ISO-8859-1

    你为什么大喊大叫?这是什么语言?你能调整你的标签吗?正如之前在回答许多问题时所说的那样:实际上不可能弄清楚二进制blob的编码方式是什么!你应该总是,总是有元数据告诉你什么是编码的东西。如果你不这么做,你就完蛋了。