2010-07-02 4 views
-1

У меня есть несколько символов, которые не распознаются должным образом. Символы, такие как:Что такое кодировка символов?

 
º 
á 
ó 
(etc..) 

Это означает, что кодировка символов не UTF-8 не так ли? Итак, можете ли вы сказать мне, что кодировка символов может быть приятной.

ответ

3

читать этот первую http://www.joelonsoftware.com/articles/Unicode.html

Есть два кодировок: тот, который был использован для кодирования строки и один, который используется для декодирования строки. Они должны быть одинаковыми, чтобы получить ожидаемый результат. Если они отличаются друг от друга, некоторые символы будут отображаться некорректно. мы можем попытаться угадать, если вы публикуете фактические и ожидаемые результаты.

5

У нас недостаточно информации, чтобы действительно ответить на этот вопрос, но суть в этом: вы не должны просто догадываться. Вам нужно выяснить, откуда поступают данные, и узнать, что такое кодировка. Вы не сказали нам что-нибудь о источнике данных, поэтому мы полностью в темноте. Вы можете хотите попробовать Encoding.Default если это файлы, которые были сохранены с помощью чего-то вроде Блокнота.

Если вы знаете, что символы означает быть и как они представлены в двоичном формате, это должно предлагать кодировку ... но опять же, нам нужно будет узнать больше информации.

+0

Я только даю примеры .. Потому что я тоже не знаю. Они переносятся из программы под названием Кондор, и у меня нет доступа к ее исходному коду! –

+0

@aF: вот почему я написал методы, представленные в ответе ниже, в первую очередь. Иногда эвристический алгоритм - единственное практическое решение. –

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

Кодирование - это форма изменения существующего контента; что позволяет анализировать требуемые протоколы назначения.

Пример кодирования можно увидеть при просмотре Интернет:

URL, вы посетите: 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 

различные системы используют разные формы кодирования, в этом примере я использовал стандартную кодировку Hex для URL. В других приложениях и экземплярах может потребоваться использование других типов кодирования.

Удачи!