2016-02-23 6 views
-1

Когда я сохраняю текстовый документ в UTF-8, который в основном говорит: «Компьютер, используйте кодировку для UTF8, которая установлена ​​где-то на вашем компьютере, чтобы выяснить, как превратить символы 1 и 0 в символы, правильно?понимание различных кодировок символов

Когда я сохранить это содержание:

激光 
äüß 
#§ 

в ISO-8895-1, он становится это (на Linux, используя редактор Kate):

æ¿å 
äüà 
#§ 

Что не отображается в том, что в первой и второй строке, которые представляют собой некоторые странные квадраты, отображаемые вместо символов (их можно увидеть в инструментах разработчика).

Итак, я понимаю, что это означает, что комбинация 0 и 1, представляющих 激 в utf-8, сопоставляется с æ в ISO-8895-1, правильно? И странные квадраты> < происходят из-за отсутствия сопоставления для этого двоичного числа в наборе символов ISO-8895-1, поэтому компьютер по умолчанию использует некоторую другую кодировку.

Верно ли это?

+0

[Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать об Unicode и наборах символов (без оправданий!)] (Http://www.joelonsoftware.com/articles/Unicode.html) –

+0

Спасибо, я уже читал это, но я все еще не был на 100% уверен, что получил это. – user3813234

ответ

0

Да, вроде как правильно. Если вы храните файл как UTF-8, он обычно получает специальную комбинацию байтов, которая указывает тип кодировки в начале файла. Я думаю, Кейт (не знаю этого редактора) не распознает это и просто отображает файл как что-то еще. Таким образом, ваш файл по-прежнему корректен, но был просто визуализирован неправильно. Странные квадраты - еще один индикатор, что Кейт не распознает эти ведущие байты, потому что обычно редакторы скрывают их от пользователя и просто используют эту информацию для корректного отображения файла.

+1

Спецификация не рекомендуется в сочетании с UTF-8, поэтому наличие спецификации не является обычным для текста UTF-8 –

0

У вас оно в значительной степени правильное. Например, The character U+6FC0 (激) кодируется с 3 байтами в UTF-8: 0xE6 0xBF 0x80.

Если вы интерпретируете эти байты в ISO-8859-1, вы получите символы æ¿. В зависимости от версии ISO-8859-1, 0x80 либо не отображается на символ вообще, либо сопоставляется с непечатаемым управляющим символом, поэтому вы можете увидеть только два символа для трех байтов.

Если вы используете Windows-1252 вместо ISO-8859-1, вы увидите æ¿€.

Смежные вопросы