ANSI в UTF-8 в Notepad ++

93059
user3658425

У меня есть текст, закодированный в ANSI:

ANSI text file

Когда я попытался преобразовать его в UTF-8 (используя меню Кодировка> UTF-8 в Блокноте ++), я получил несколько странных символов:

UTF-8 text file

Я думал, что UTF-8 - это расширенный набор ANSI, и что впоследствии у меня не будет таких проблем. Могу ли я в любом случае избежать появления этих странных персонажей?

23
Я не вижу, что странно в последнем изображении phuclv 9 лет назад 0
Я имел в виду не отображаемые символы. Есть ли способ избежать этого? user3658425 9 лет назад 0
Вы редактировали вопрос? Я думаю, что я вижу изображения полностью измененными phuclv 9 лет назад 0
Да, извините, я отправил свое последнее редактирование сразу после того, как кто-то добавил изображения, тем самым стирая добавление: если вы можете добавить их обратно, это было бы здорово! user3658425 9 лет назад 1
Все, что я узнал об этой теме, я узнал из статьи Джоэла «[Абсолютный минимум для каждого разработчика программного обеспечения, абсолютно, положительно должен знать о юникоде и наборах символов (без оправданий!)]» (Http://www.joelonsoftware.com/articles/Unicode. HTML)» Uwe Keim 9 лет назад 4
@UweKeim: довольно плохо, потому что он устарел. Он утверждает, что UTF-8 может занимать до шести байтов на кодовую точку, и рекомендует UCS-2 (!?) На стороне сервера (!?!?). ybungalobill 8 лет назад 0

1 ответ на вопрос

35
phuclv

UTF-8 is not a charset, just an encoding for Unicode. The first 128 characters are the same as ASCII but differ in the high 128 bytes. A byte with the high bit set (or >= 0x80) is an extended character in ASCII while in UTF-8 it indicates the start byte of a multi-byte sequence. That's the case of 0x93 or 0x94 above. However, I don't see anything strange in the file. Those are smart quotes or quotes with different forms for opening and closin quotes, which you often see when using a rich text editor such as MS Word

Edit

The question has edited. I think that's because you have chosen the wrong tool. The encode menu items are for changing the encoding if you have wrong character displays. It just treats the same byte sequence read from disk as another encoding. Since ASCII and UTF-8 are different, you'll have an illformed UTF-8 byte sequence and see the result above. You need to choose convert to UTF-8 for it to change the whole input bytes

notepad encoding

You also have confused ANSI and ASCII. ANSI often refers to Windows-1252, which is a character set used in English Windows and some Western Europe languages. It's a superset of ISO 8859-1, although ISO 8859-1 may also be refered to as ANSI. ISO 8859-1 is also the first 256 codepoints of Unicode, so it's a subset of Unicode, but it's not compatible with UTF-8 encoding. ASCII is a 7-bit character set and is a subset of the ANSI which is encoded by 8 bits, but it's also sometimes refered to as ANSI, although not very correct

https://en.wikipedia.org/wiki/ANSI_character_set

In general the relationship between character sets is as follow

ASCII < ISO 8859-1 < Windows-1252 ^ Unicode 
Спасибо, извините, что испортил кодировку с кодировкой. Есть ли способ избежать появления этих не отображаемых символов и иметь вместо них отображаемые кавычки? user3658425 9 лет назад 0
@ user3658425 пожалуйста, посмотрите мои изменения phuclv 9 лет назад 0
Спасибо, это решает мою проблему. Не знаю почему, но я думал, что «кодировать» в меню означает, что оно будет преобразовано :) user3658425 9 лет назад 0
Я также отредактировал информацию ANSI / ASCII выше phuclv 9 лет назад 1
Обратите внимание, что, как правило, «UTF-8 без метки порядка байтов» - это то, что вам нужно. Как уже говорили несколько других в прошлом, * «UTF-8 - ** только ** полезное кодирование строки». * Riking 9 лет назад 3
@Riking: Никогда не используйте UTF-8; или "N'DUUH!" Williham Totland 9 лет назад 0
@WillihamTotland http://www.utf8everywhere.org/ phuclv 9 лет назад 3
@ LưuVĩnhPhúc: Действительно. Williham Totland 9 лет назад 0