4

В моих текстовых редакторах у меня есть две "одинаковые" 5-символьные строки (Sublime Text2 | Notepad++).

Первая строка была скопирована из Gmail, а вторая просто напечатана вручную.

Когда я выбираю первую строку, я вижу 6 выбранных символов. Когда я выбираю вторую строку, я вижу 5 выбранных символов.

Когда я выбираю обе строки в Sublime Text2 одновременно, я вижу, что после первой строки выделен дополнительный пробел.

Я включил "Отображать все символы" в Notepad++, но не вижу ничего явно отличающегося между первой и второй строкой.

Файл использует кодировку UTF-8. И проблема одинакова в обоих текстовых редакторах.

Кто-нибудь может посоветовать, пожалуйста, как убрать невидимый лишний символ и откуда он взялся?

2 ответа2

3

Исходя из полученной строки ANSI, gffk9​ , кажется, что дополнительный символ, присутствующий в тексте, является пробелом нулевой ширины. Пробелы нулевой ширины используются для указания того, где программа, отображающая текст, может "безопасно" разбить строку, когда текст фактически не содержит видимых пробелов. Поскольку вы скопировали его из Gmail, похоже, что это пришло из электронного письма, в котором для форматирования текста использовался HTML.

То, как вы можете удалить лишний символ, может зависеть от вашей системы. Этот плагин шестнадцатеричного просмотра для Sublime Text выглядит многообещающе, поскольку он предлагает некоторые возможности поиска, но в нем явно не упоминается поиск по шестнадцатеричной строке или замене. Поскольку вы используете Notepad++, я предполагаю, что вы находитесь в Windows. XVI32 позволит вам искать и заменять шестнадцатеричные строки в файле.

Для справки, если вы находитесь в Unix-подобной среде, sed позволит вам заменить вхождения шестнадцатеричной строки в файле, используя процесс, описанный в этом посте.

В любом случае шестнадцатеричная строка, которую вы хотели бы найти и заменить, будет E2 80 8B .

2

Это сработало для меня в Sublime 3 без использования шестнадцатеричного редактора.
Используя обычный поиск и замену.

  • Открыть диалог замены (Ctr + H)
  • введите код Unicode U200B в «Найти что» (см. советы ниже)
  • оставьте «Заменить» пустым
  • Заменить все

/* Во-первых, чтобы получить код Unicode, используйте метод вашей ОС.

  • Windows - удерживайте Alt и введите код Unicode
  • Linux - Ctrl + Shift + u, не отпуская Ctrl и Shift, наберите код
  • Sublime под Linux - Что касается Linux, кроме Ctrl + Alt + Shift. (Sublime 3 связывает Ctrl + Shift + u для «мягкого повтора»)

Кроме того, если вы знаете, где находится символ возвышенного, вы можете просто выбрать его с помощью shift + Arrow, вы узнаете, что получили его, потому что курсор не двигается, он просто становится немного толще :-)

Композиция Unicode в возвышенном тексте

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .