Ошибки синтаксического анализа из-за специальных символов в DNS-записи TXT

229
Katja Eichelberger

У меня проблемы с анализом записей DNS TXT, полученных с помощью сценария, который я написал. Сценарий берет записи, записи ns и записи txt и записывает их в файл .csv. Я использую точку с запятой для разделения записей и "в качестве разделителя текста.

Поскольку записи txt содержат специальные символы, такие как «, это приводит к ошибкам синтаксического анализа, когда я пытаюсь открыть файл .csv, например, в электронных таблицах.

IN TXT "verification=12345678901234567890" 

Если в записи имеется несколько записей, это приводит к "возникновению в записи и, например, ""в конце записей. Ведущий кcdn.net."verification=12345678901234567890"";"...

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

1
Скажите вашему приложению для работы с электронными таблицами разделять только точки с запятой, а не запятые? mtak 6 лет назад 0

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

1
nKn

Файлы CSV - это просто текстовые файлы, отформатированные с разделителем, который вы можете выбрать. Таким образом, в основном разделитель - это не то, что вы вводите в документе, который вы пишете, а тот, кто хочет открыть файл, который может выбрать разделитель. "по умолчанию только один, но может быть изменен.

В настоящее время любое приличное программное обеспечение, которое обрабатывает файлы CSV, позволяет пользователям выбирать разделитель. Я хотел бы предложить выбрать символ, который вы уверены, что вы не будете использовать в качестве разделителя документа (например: $, #, ...) и сказать людям, что следует открыть документ, в котором разделитель является, что символ вместо ",

Другой способ - открыть файл самостоятельно в первый раз с выбранным разделителем, сохранить файл в другом формате ( .xlsнапример) и отправить этот последний файл людям, которые должны прочитать документ. Таким образом, им не нужно будет выбирать разделители при открытии.