Забавная штука строки в программировании. Ну, что может быть проще — есть строка, ее куда-то передать и сохранить. Какие могут быть вообще проблемы с этим?
Как показывает опыт, гигантское количество может быть проблем.
Ну начнет с того, что есть куча кодировок: всякие UTF-8, Windows-1251, ASCII, ANSI? Если вы не совсем понимаете откуда растут ноги, то почитайте тут.
Кстати. еще приятная вещь, которая наложилась поверх всех этих UTF-16 это little-endianess и big endianess (можно почитать тут).
Но это еще все. Еще приятная штука, что куча программ/форматов используют специальные разделители для своих внутренних нужд.Ну например sheel в Unix использует | для pipes, да в Windows/DOS command line она тоже вроде используется. Соответственно, люди придумали escape символы, чтобы показать, что символ пользуется не в переносном (специальном смысла), а
прямом. К этому еще добавилось разделитель слов (пробел) и кавычки (как метод показать, что пробел не специальный знак).
К чему это я? Да прост убил фактически день на отслеживание следующей ситуации.
Installer использует
Command line и вызывает
Ruby script (с параметрами), который использует
Command line и вызывает
Java (c параметрами), которая вызывает какой-то
Java bean (внутри одного большого проекта), который читает и пишет
DB, а также создает
Certificate.
Из этого все Command line не любит определенные символы.
DB не любит определенные символы.
Certificate не любит определенные символы
Большой продукт пытается примерить некоторые входные параметры с тем, что не любит DB и Certificate. Но примеряет не все, не до конца и не совсем по стандарту. Плюс благодаря
этому он еще и херит некоторое количество того, что должно было работать для Certificate.
В общем, выдайте мне машину времени, нужно срочно вернуться на 50 лет назад и выдать им единый метод
а) Хранения integer в памяти
б) Encoding строк
в) Использования разделителей и escape characters
г) Правил по работе с строками вот в таких вот стеках.