2010-07-02 124 views
-1

我有幾個字符不能正確識別。 字符,如:什麼是字符編碼?

 
º 
á 
ó 
(etc..) 

這意味着字符編碼不是UTF-8正確? 那麼,你能告訴我什麼字符編碼可以請。

回答

3

讀取該第一http://www.joelonsoftware.com/articles/Unicode.html

有兩種編碼:這是用於編碼字符串和用於解碼串的一個的一個。他們必須是相同的才能獲得預期的結果。如果它們不同,則某些字符將顯示不正確。我們可以嘗試猜測您是否發佈了實際和預期的結果。

5

我們沒有足夠的信息來真正回答這個問題,但其要點是:您不應該只是猜測。你需要計算出數據來自哪裏,並找出編碼是什麼。你還沒有告訴我們什麼關於數據源,所以我們完全處於黑暗中。你可能想嘗試Encoding.Default如果這些文件是用記事本保存的。

如果您知道意思是是什麼,以及它們是如何用二進制表示的,那麼應該提示編碼...但是,我們需要了解更多信息。

+0

我只能舉例。因爲我也不知道。它們是從一個名爲Kondor的程序運輸而來的,我無法訪問它的源代碼! – 2010-07-02 15:29:34

+0

@aF:這就是爲什麼我首先寫出了答案中提出的方法。有時啓發式算法是唯一實用的解決方案。 – 2010-07-02 17:20:00

3

我寫了一些方法來縮小可能性,而這種情況就像這樣。

static void Main(string[] args) 
     { 
      Encoding[] matches = FindEncodingTable('Ÿ'); 
      Encoding[] enc2 = FindEncodingTable(159, 'Ÿ'); 
     } 
     // Locates all Encodings with the specified Character and position 
     // "CharacterPosition": Decimal position of the character on the unknown encoding table. E.G. 159 on the extended ASCII table 
     //"character": The character to locate in the encoding table. E.G. 'Ÿ' on the extended ASCII table 
     static Encoding[] FindEncodingTable(int CharacterPosition, char character) 
     { 
      List matches = new List(); 
      byte myByte = (byte)CharacterPosition; 
      byte[] bytes = { myByte }; 
      foreach (EncodingInfo encInfo in Encoding.GetEncodings()) 
      { 
       Encoding thisEnc = Encoding.GetEncoding(encInfo.CodePage); 
       char[] chars = thisEnc.GetChars(bytes); 
       if (chars[0] == character) 
       { 
        matches.Add(thisEnc); 
        break; 
       } 
      } 
      return matches.ToArray(); 
     } 
     // Locates all Encodings that contain the specified character 
     static Encoding[] FindEncodingTable(char character) 
     { 
      List matches = new List(); 
      foreach (EncodingInfo encInfo in Encoding.GetEncodings()) 
      { 
       Encoding thisEnc = Encoding.GetEncoding(encInfo.CodePage); 
       char[] chars = { character }; 
       byte[] temp = thisEnc.GetBytes(chars); 
       if (temp != null) 
        matches.Add(thisEnc); 
      } 
      return matches.ToArray(); 
     } 
1

編碼是修改某些現有內容的形式;從而允許它被所需的目標協議解析。

編碼的例子可以瀏覽互聯網時可以看到:

您訪問的網址:www.example.com,可有搜索工具,通過URL地址來運行定製搜索:

www.example.com?search=... 

URL上的以下變量需要URL編碼。如果你是寫:

www.example.com?search=cat food cheap 

因爲你已經使用的「無效字符,瀏覽器就不會明白你的要求」(一個空格)

要糾正這個錯誤編碼應交換「 '與‘%20’,以形成此URL:

www.example.com?search=cat%20food%20cheap 

不同的系統使用不同的編碼形式,在這個例子中我已經使用標準十六進制編碼的URL。在其他應用程序和實例中,您可能會發現需要使用其他類型的編碼。

祝你好運!

相關問題