Я далёк от программирования, но насколько трудно добавлять поддержку других языков? В смысле у меня есть софт открывающий архивы с изображениями. Если название изображений или самого архива написаны японскими иероглифами или буквами то он или не открывает или выдает ошибку чтения.
Конкретно CDisplay
По-идее, не очень сложно. Сам с таким сталкивался как разработчик, но больше из-за странных символов в европейский языках. Вопрос подбора правильного encode/decode.
В теории не сложно. Но в моей практике любой англоязычный софт написанный для англоязычных (особенно если это самописный,а не контора) использует внутри себя тип данных char и не заморачивается с возможными кодировками используя только английскую интерпретацию.
Очень многое зависит от форматов.
Если формат сам по себе юникодный, то разработчику практически ничего и не нужно делать, кроме как использовать исключительно юникодные аналоги функций вместо "обычных". В нормальных языках программирования вкупе с SDK такие функции должны быть.
Но вот пример с архивами коварен. ZIP-архивы - старый формат. Они могут использовать разнообразные однобайтовые кодировки, причем сама кодировка нигде в архиве не указывается. Распаковывающий пользователь должен сам понять, какой кодировкой пользовался запаковывающий пользователь, и выставить в настройках архиватора эту кодировку, чтобы корректно распаковать файл. Все настолько плохо, что даже по сей день пользователи Винды, Мака и Линукса нет-нет да и испытывают проблемы при обмене ZIP-архивами, хотя, казалось бы, у софта было больше 30 лет, чтобы сделать работу с этим форматом максимально простой и прозрачной для пользователя.
Мораль: выдумываешь консьюмерский формат - делай его юникодным (либо имей очень весомые основания поступать иначе).
Если формат сам по себе юникодный, то разработчику практически ничего и не нужно делать, кроме как использовать исключительно юникодные аналоги функций вместо "обычных". В нормальных языках программирования вкупе с SDK такие функции должны быть.
Но вот пример с архивами коварен. ZIP-архивы - старый формат. Они могут использовать разнообразные однобайтовые кодировки, причем сама кодировка нигде в архиве не указывается. Распаковывающий пользователь должен сам понять, какой кодировкой пользовался запаковывающий пользователь, и выставить в настройках архиватора эту кодировку, чтобы корректно распаковать файл. Все настолько плохо, что даже по сей день пользователи Винды, Мака и Линукса нет-нет да и испытывают проблемы при обмене ZIP-архивами, хотя, казалось бы, у софта было больше 30 лет, чтобы сделать работу с этим форматом максимально простой и прозрачной для пользователя.
Мораль: выдумываешь консьюмерский формат - делай его юникодным (либо имей очень весомые основания поступать иначе).
такое бывает если много легаси-кода, используются старые библиотеки, старые API-вызовы к операционке.
если писать с нуля сразу под юникод - такого не будет.
например, Total Commander вплоть до версии 7.0 (может и старше) не умеет совершать операции над файлами с европейскими символами или иероглифами. а до версии 3.0 и с кириллицей у него были большие проблемы.
если писать с нуля сразу под юникод - такого не будет.
например, Total Commander вплоть до версии 7.0 (может и старше) не умеет совершать операции над файлами с европейскими символами или иероглифами. а до версии 3.0 и с кириллицей у него были большие проблемы.
И правда бох.
Я так и не смог постичь этого дзена, какая-то инопланетная дрянь блят.
Вот как раз только что удалил кусочек кода, хз чо он делает, в упор не помню зачем его когда-то добавил. Без него тоже все работает.
Я так и не смог постичь этого дзена, какая-то инопланетная дрянь блят.
Вот как раз только что удалил кусочек кода, хз чо он делает, в упор не помню зачем его когда-то добавил. Без него тоже все работает.
матчит 4 символа в строке которые следуют за "\u", например:
в строке "\uhello world!" он словит "hell".
хз ток зачем это.. контекста маловато, но видимо что-то преабразовывает/декодирует.
в строке "\uhello world!" он словит "hell".
хз ток зачем это.. контекста маловато, но видимо что-то преабразовывает/декодирует.
Контекста хватает полностью. Аналогично с тем, что \0 - нулевой символ, можно использовать escape-последовательности \x00 для и \u0000 для обозначения символа с одно- и двухбайтным кодом соответственно.
Работает как в JS, так и в python
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#escape_sequences
https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
Говорят, даже в C++: https://stackoverflow.com/a/6797458
Послание читателям: "\u0442\u044b\u0020\u043f\u0438\u0434\u043e\u0440".
Работает как в JS, так и в python
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#escape_sequences
https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
Говорят, даже в C++: https://stackoverflow.com/a/6797458
Послание читателям: "\u0442\u044b\u0020\u043f\u0438\u0434\u043e\u0440".
То есть им пришло откуда-то такое представление строки, и они его руками чистят.
>> Контекста хватает полностью
признаю: я сразу написал каммент и только потом вчитался и понял что речь про Юникод. Извиняйте)
признаю: я сразу написал каммент и только потом вчитался и понял что речь про Юникод. Извиняйте)
Мисье , вы и сам \u043f\u0438\u0434\u043e\u0440
Ептаскрипт
очевидно же, что кодирует юникод. правда четыре точки следовало бы заменить на что-то вроде [0-9a-fA-F]{4}
А, точно, спасибо большое! Были на старте заморочки с этим делом. Потом исправил это на серваке, а тут видимо хвостик остался.
Я даже пытался гуглить, чтобы понять что ета. Но гуглить эти шифры заведомо провальная идея)
Я даже пытался гуглить, чтобы понять что ета. Но гуглить эти шифры заведомо провальная идея)
Чел, комменть свой код, реально спасает в таких делах
Задалбывает комментарии писать и переписывать каждый раз при изменениях, легче уж называть все читаемыми (хоть сколько-то, или ну хотя бы понятными мне) именами, чтобы код читался сам.
А этот кусочек кода был из интернетов, поэтому остался таким вот загадочным.
А этот кусочек кода был из интернетов, поэтому остался таким вот загадочным.
такие вещи надо обязательно коментировать, потому что "удалил, не работает, вернул, хз что это было" - не решение.
Юнит тестов должно быть достаточно. Хотя я крайне сомневаюсь в их наличии в данном проекте.
Не комментят код ибо "и так всё ясно" либо молодые и неопытные, либо тупые.
Regex очень хорошо документируется тестами.
Ну почему же, вот мне разок надо было распарсить самлиб, ради вытягивания оттуда книжек да сохранения их в виде fb2. Производительность от скрипта не требовалась, а время тратить было неохота, регулярки подошли.
Классическое "быстро" против "хорошо".
Если ты ваяешь программу либо по работе, либо которой собираешься неоднократно пользоваться или публиковать, то использование DOM-парсеров - более правильный подход, снижающий вероятность ошибки, упрощающий код и последующие доработки. Пусть даже сама программа и будет чуть больше (однако при использовании нормального коробочного DOM-парсера - не сильно-то и больше).
Если тебе нужно один раз набыдлокодить скриптик, получить результат и забыть о нем, то делай как быстрее, конечно. Только это сложно назвать похвальным достижением, потому что это на уровне "ребят, я тут недавно забыл ключи дома, дверь захлопнул, но мне удалось влезть в открытую форточку", - все должны понимать, что по многим причинам в большинстве ситуаций в дом (no pun intended) нужно ходить через дверь, пользуясь с ключом.
Если ты ваяешь программу либо по работе, либо которой собираешься неоднократно пользоваться или публиковать, то использование DOM-парсеров - более правильный подход, снижающий вероятность ошибки, упрощающий код и последующие доработки. Пусть даже сама программа и будет чуть больше (однако при использовании нормального коробочного DOM-парсера - не сильно-то и больше).
Если тебе нужно один раз набыдлокодить скриптик, получить результат и забыть о нем, то делай как быстрее, конечно. Только это сложно назвать похвальным достижением, потому что это на уровне "ребят, я тут недавно забыл ключи дома, дверь захлопнул, но мне удалось влезть в открытую форточку", - все должны понимать, что по многим причинам в большинстве ситуаций в дом (no pun intended) нужно ходить через дверь, пользуясь с ключом.
Спустился сюда за тем, чтобы написать, что регулярки -- мощнейший и полезнейший инструмент, но из-за своей чрезвычайной выразительности (ну серьёзно), треубуется достаточно много практики, чтобы научиться их читать и эффективно пользоваться "из головы". И тут на помощь неофиту приходят саеты типа https://regex101.com/
Ваша регулярка и её матчи получат наиполнейший дамп того как работает машина, все группы символов и суб-матчи будут разложены, визуализированы, и даже всякие полезные коменты по стилистике оно, тащемта, тоже добавляет. Начните хуярить регулярки там где нужно, регулярно обращаясь за помощью к такому ресурсу, и вскоре регулярки превратятся в незаменимый, полезный и крайне эффективный инструмент. Больше никакой токенизации вручную, байтодрочерства и "я потом зделою конфиг потому что это долго а сейчас нахуярю статику в программу гвоздями". Capture-группы и рекурсия!
Это я делюсь опытом, спаибозавнимание
Ваша регулярка и её матчи получат наиполнейший дамп того как работает машина, все группы символов и суб-матчи будут разложены, визуализированы, и даже всякие полезные коменты по стилистике оно, тащемта, тоже добавляет. Начните хуярить регулярки там где нужно, регулярно обращаясь за помощью к такому ресурсу, и вскоре регулярки превратятся в незаменимый, полезный и крайне эффективный инструмент. Больше никакой токенизации вручную, байтодрочерства и "я потом зделою конфиг потому что это долго а сейчас нахуярю статику в программу гвоздями". Capture-группы и рекурсия!
Это я делюсь опытом, спаибозавнимание
он еще не знает...
Обожаю две вещи - писать формулы в екселе и баловаться регулярными выражениями.
Ексель - за то, что для простых, казалось бы, операций требуется написать страницу формул.
Регулярные выражения - за то, что сам перестаешь понимать как работает регулярка через 10 минут после написания.
Ексель - за то, что для простых, казалось бы, операций требуется написать страницу формул.
Регулярные выражения - за то, что сам перестаешь понимать как работает регулярка через 10 минут после написания.
Чтобы написать коммент, необходимо залогиниться