Наименьшее количество используемого символа-разделителя в обычном тексте <ASCII 128

Для кодирования причин, которые ужаснули бы Вас (я слишком смущен для высказывания), я должен сохранить много текстовых объектов в единственной строке.

Я разграничу их использующий символ.

Который символ является лучшим для использования для этого, т.е. который символ маловероятно для появления в тексте? Должно быть печатаемым и вероятно меньше чем 128 в ASCII для предотвращения проблем локали.

69
задан Rahul 4 October 2019 в 09:28
поделиться

0 ответов

Принятие по некоторой смущающей причине, Вы не можете использовать CSV, которые, как я сказал бы, идут с данными. Возьмите некоторые демонстрационные данные и проведите простой подсчет символов для каждого значения 0-127. Выберите одного из тех, который не происходит. Если существует слишком много выбора, получают больший набор данных. Это не займет время для записи, и Вы получите ответ лучше всего для Вас.

ответ будет отличаться для различных проблемных областей, таким образом, | (канал) будет распространено в сценариях оболочки, ^ распространен в математических формулах, и то же, вероятно, верно для большинства других символов.

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

И независимо от того, что Вы делаете, удостоверьтесь, что Вы разработали схему выхода!

31
ответ дан Nick Fortescue 24 November 2019 в 13:48
поделиться

Вы, вероятно, оказываетесь перед необходимостью выбирать что-то и игнорировать его другое использование.

+ 

мог бы быть хороший кандидат.

1
ответ дан Iain Holder 3 July 2019 в 20:15
поделиться

Хорошо это собирается зависеть от природы Вашего текста в некоторой степени, но вертикальная панель 0x7C не неожиданно возникает в тексте очень часто.

1
ответ дан Jackson 24 November 2019 в 13:48
поделиться

Это может быть хорошо или плохо (обычно плохо) в зависимости от ситуации и языка, но сконцентрировать мысли ума, что Вы всегда можете Base64 кодировать все это. Вы затем не должны волноваться о выходе и невыходе из различных шаблонов на каждой стороне, и можно просто разделить и разделить строки на основе символа, который не используется в наборе символов Base64.

я должен был обратиться к этому решению, когда сталкивающийся с помещением XML-документов в свойства/узлы XML. Свойства не могут иметь блоков CDATA в них вообще, и узлы вышли, поскольку CDATA, очевидно, не может иметь далее блоков CDATA в этом, не повреждая структуру.

CSV является, вероятно, лучшей идеей для большинства ситуаций, все же.

2
ответ дан Coxy 24 November 2019 в 13:48
поделиться

Канал для победы! |

2
ответ дан Eppz 24 November 2019 в 13:48
поделиться

Я не думаю, что когда-либо видел амперсанд, сопровождаемый запятой в естественном тексте, но можно проверить файл сначала, чтобы видеть, содержит ли это разделитель, и если так, используйте альтернативу. Если Вы хотите всегда смочь знать, что разделитель, который Вы используете, не вызовет конфликт, то сделает цикл, проверяющий файл на разделитель, который Вы хотите, и если он существует, то удвойте строку, пока файл больше не имеет соответствие. Не имеет значения, если существуют подобные строки, потому что Ваша программа будет только искать точные совпадения разделителя.

1
ответ дан 24 November 2019 в 13:48
поделиться

Мы используем ascii 0x7f, который является псевдопечатаемым и почти никогда не подходит в регулярном использовании.

2
ответ дан Joe 24 November 2019 в 13:48
поделиться

Можно ли использовать символ вертикальной черты? Это обычно - следующий наиболее распространенный разделитель после запятой, или вкладка разграничила строки. Маловероятно, что большая часть текста содержала бы канал, и порядок (' | ') возвращается 124 для меня, так, чтобы, казалось, соответствовал Вашим требованиям.

9
ответ дан Jay 24 November 2019 в 13:48
поделиться

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

(Интересно достаточно таблица ASCII имеет символы GS (0x1D), RS (0x1E), и США (0x1F) для группы, записи и разделителей единицы, независимо от того, что это.)

, Если "печатаемым" Вы имеете в виду символ, который пользователь мог распознать и легко ввести, я пойду для канала | символ сначала с несколькими другими странными символами (@ или ~ или ^ или \, или обратная галочка, которую я, может казаться, не ввожу здесь) как возможность. Эти символы +=!$%&*()-'":;<>,.?/ кажутся, что, более вероятно, произошли бы во вводе данных пользователем. Что касается подчеркивания _ и хеша # и скобки {}[] я не знаю.

13
ответ дан Jason S 24 November 2019 в 13:48
поделиться

Как насчет Вас используют формат стиля CSV? Символов можно оставить в стандартном формате CSV, и уже существует много синтаксических анализаторов, уже записанных.

13
ответ дан GEOCHET 24 November 2019 в 13:48
поделиться

Вероятно, | или ^ или ~ Вы могли также объединить два символа

17
ответ дан SQLMenace 24 November 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: