Open Shanginre opened 3 years ago
@Shanginre
Если строка s будет содержать некоторые спец символы unicode, например такие как неразрывный пробел (U+00A0), то это вызовет ошибку преобразования и исходная строка в лучшем случае получится обрезанной
Мы с такой ошибкой/особенностью в "типовой функции" не сталкивались (и в "интернетах" о такой особенности не пишут).
Тащить boost внутрь компоненты пока не планируем.
@Begemoth2 неразрывный пробел появляется например когда число 1С преобразуют сразу в строку не используя Формат(). В практике, это иногда случается по невнимательности разработчика.
Вы сами попробуйте перевести такую строку "1<здесь неразрывный пробел>000" в wstring. Вы в функции conv.from_bytes(s) получите исключение и строка у вас обрежется.
@Shanginre
Если строка s будет содержать некоторые спец символы unicode, например такие как неразрывный пробел (U+00A0)
Здесь нет символа 00. nobreak space в utf-8 равен 0xC2 0xA0
Выложите пожалуйста код, который иллюстрирует ошибку (на 1С с использованием компоненты или на c++ )
В файле /PinkRabbitMQWindows/NativeAPI/CAddInNative.cpp есть такой код
В методе Utils::stringToWs реализовано такое преобразование из string в широкую строку wstring:
Если строка s будет содержать некоторые спец символы unicode, например такие как неразрывный пробел (U+00A0), то это вызовет ошибку преобразования и исходная строка в лучшем случае получится обрезанной. Может будет более безопаснее использовать проверенную?