簡體   English   中英

字符串類型轉換C#

[英]string type conversion C#

這是我的問題:我有一個我認為是二進制的字符串:

zv�Q6��.�����E3r

我想將此字符串轉換為可以讀取的內容。 如何在C#中做到這一點?

byte[] hexbytes = System.Text.Encoding.Unicode.GetBytes();

這為您提供了字符串的十六進制字節,但是您必須知道字符串的編碼,並用其替換“ Unicode”。

您可以嘗試枚舉(測試)所有可用的編碼,然后找出編碼合理文本的編碼。 不幸的是,當這不是絕對的解決方案時:錯誤轉換可能會導致信息丟失。

   public static String GetAllEncodings(String value) {
      List<Encoding> encodings = new List<Encoding>();

      // Ordinary code pages
      foreach (EncodingInfo info in Encoding.GetEncodings()) 
        encodings.Add(Encoding.GetEncoding(info.CodePage));

      // Special encodings, that could have no code page
      foreach (PropertyInfo pi in typeof(Encoding).GetProperties(BindingFlags.Static | BindingFlags.Public))
        if (pi.CanRead && pi.PropertyType == typeof(Encoding))
          encodings.Add(pi.GetValue(null) as Encoding);

      foreach (Encoding encoding in encodings) {
        Byte[] data = Encoding.UTF8.GetBytes(value);
        String test = encoding.GetString(data).Replace('\0', '?');

        if (Sb.Length > 0)
          Sb.AppendLine();    

        Sb.Append(encoding.WebName);
        Sb.Append(" (code page = ");
        Sb.Append(encoding.CodePage);
        Sb.Append(")");

        Sb.Append(" -> ");
        Sb.Append(test);
      }

      return Sb.ToString();
    }

    ...


// Test / usage

    String St = "Некий русский текст";      // <- Some Russian Text
    Byte[] d = Encoding.UTF32.GetBytes(St); // <- Was encoded as UTF 32
    St = Encoding.UTF8.GetString(d);        // <- And erroneously read as UTF 8

    // Let's see all the encodings:
    myTextBox.Text = GetAllEncodings(St);

    // In the myTextBox.Text you can find the solution:
    // ....
    // utf-32 (code page = 12000) -> Некий русский текст
    // ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM