1

У меня есть файл CSV, в котором я вижу следующую выдержку:

Скриншот

Я нашел эти "черные" символы, прокручивая файл. Файл огромный (32 Мб). Я не уверен, в какой кодировке находится файл; На данный момент мой Блокнот ++ установлен на «Кодирование в UTF-8». Кроме того, когда я пытаюсь сделать ASCII -> HEX (Plugins-> Converter-> ASCII -> HEX), я получаю следующий вывод:

EDA0BDEDB88A

Я бы хотел знать:

  • Кодировка этих черных символов.
  • Регулярное выражение для поиска похожих случаев в моем файле CSV

1 ответ1

2

Черные символы вызваны тем, что Notepad++ не может отобразить эти последовательности байтов в конечную точку UTF-8, которую можно визуализировать. Как вы, возможно, знаете, каждый символ хранится в виде серии байтов. В этом случае эти байты

В шестнадцатеричном

ED A0 BD ED B8 8A

В двоичном

1110 1101 1010 0000 1011 1101 1110 1101 1011 1000 1000 1010

Это подводит нас к вашим вопросам.

Какова кодировка этих черных символов?

Это два символа UTF-8. Более конкретно, первый ED A0 BD - это то, что называется «высоким суррогатом», второй - ED B8 8A - «низким суррогатом». Вместе они образуют суррогат UCS. Теперь, когда мы знаем, что это суррогатные символы, мы можем изменить расчет суррогатных пар.

Если вы посмотрите на эти последовательности байтов в таблице кодовых точек UTF-8, вы обнаружите, что первая соответствует U+D83D а вторая - U+DE0A . Следовательно, пара D83D+DE0A. Это соответствует U+1F60A, который ..... барабанная дробь Смайлик !

Итак, последовательность, на которую вы смотрите ... это смайлик.

Регулярное выражение для поиска этих символов

Теперь, когда мы знаем это, мы можем использовать регулярные выражения, чтобы найти последовательности, подобные этой:

\x{D83D}\x{DE0A}

А затем для вопроса, который вы добавили в комментариях позже (это редактирование).

Есть ли какая-либо другая утилита, в которой я могу найти символы, которых нет в UTF8, в моем CSV-файле.

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

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