|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Есть сообщение xml сообщения в формате UTF-8 т.е. там из само сообщение и его заголовок с указанием версии <?xml version="1.0" encoding="UTF-8" standalone="yes"?> нужно сконвертировать XML в Utf-16 вместе с заголовком. Самый легкий путь это конечно снести заголовок и просто перекодировать сообщение в UTF-16 как текст, но хотелось бы более технологичный вариант. Напр через JAXP через парсер считать XML (без DOM просто Simple API ), и перевести в другую кодировку. В документации JAXP и поиском хорошего варианта я не нашел. Задача относится к известной проблеме - как сохранить Utf-8 в колонку MS SQL с типом XML . MS SQL хранит все в UTF-16, а сообщение приходит в UTF-8 Я сначала думал что SQLXML может сам преобразовать, но ошибался . Код: java 1. 2. 3.
Выдаст "XML parsing: line 1, character 38, unable to switch the encoding" Самое удивительное если сообщение передать в UTF-8 но заголовок поправить на encoding="UTF-16" передача в SQl пройдет нормально. Возможно из за того что Java хранит строки внутри в Utf-16 по некоторым источникам. В общем хотелось бы услышать Best practice , не хочется писать костыли ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 18:36 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Делай как проще. Сама задача есть костыль. А ты думаешь как костыль сделать технологичнее))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 18:45 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
PetroNotC Sharp selis76, Делай как проще. Сама задача есть костыль. А ты думаешь как костыль сделать технологичнее))) Ну это странно, что сама задача костыль вроде перекодировка в более широкую кодировку не является криминалом. Мне потом для Win-1251 тоже отдельный костыль писать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 18:57 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Костыль или нет задача мы поймем если ты напишешь откуда появляется кодировка НЕ ТА ЧТО ТРЕБУЕТСЯ. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 19:06 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Сиквел хранит только в utf 16, а приходят извне нас utf 8. Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 19:11 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
PetroNotC Sharp selis76, Сиквел хранит только в utf 16, а приходят извне нас utf 8. Так? да Сообщения приходят из шины RabbitMQ, кодировка сообщения известна. Я их сохраняю в свой буфер, буфер на MSSQL он XML хранит в UTF16. При маштабировании могут появляться новые кодировки ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 19:19 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 Есть сообщение xml сообщения в формате UTF-8 т.е. там из само сообщение и его заголовок с указанием версии <?xml version="1.0" encoding="UTF-8" standalone="yes"?> нужно сконвертировать XML в Utf-16 вместе с заголовком. Самый легкий путь это конечно снести заголовок и просто перекодировать сообщение в UTF-16 как текст, но хотелось бы более технологичный вариант. Напр через JAXP через парсер считать XML (без DOM просто Simple API ), и перевести в другую кодировку. В документации JAXP и поиском хорошего варианта я не нашел. Задача относится к известной проблеме - как сохранить Utf-8 в колонку MS SQL с типом XML . MS SQL хранит все в UTF-16, а сообщение приходит в UTF-8 Я сначала думал что SQLXML может сам преобразовать, но ошибался . Код: java 1. 2. 3.
Выдаст "XML parsing: line 1, character 38, unable to switch the encoding" Самое удивительное если сообщение передать в UTF-8 но заголовок поправить на encoding="UTF-16" передача в SQl пройдет нормально. Возможно из за того что Java хранит строки внутри в Utf-16 по некоторым источникам. В общем хотелось бы услышать Best practice , не хочется писать костыли Underscore-java умеет читать xml строку в кодировке UTF-16. Нужно прочитать строку в карту, поменять кодировку и сохранить в строку. Хорошего вам вечера! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 19:24 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, И что? Не шина их перекодирует, а все 500 адаптеров пишут у себя код перекодировки? Как то странно имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 19:58 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Дай ссыль что сиквел не умеет хранить другие кодировки. Я нашел https://docs.microsoft.com/ru-ru/sql/relational-databases/native-client/features/using-xml-data-types?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 20:17 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
наличие xml заголовка типа <?xml version="1.0" encoding="UTF-8" standalone="yes"?> в java строке - абсурдно т.к. для получения строки уже была использована кодировка Код: java 1.
т.е. если в body есть заголовок encoding="windows-1251" а ты применил "UTF-8", то ты поломал кодировку сообщения. попробуй использовать TrueXML.setBinaryStream().write(body) вместо TrueXML.setString(messagetext) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 22:15 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 PetroNotC Sharp selis76, Сиквел хранит только в utf 16, а приходят извне нас utf 8. Так? да Сообщения приходят из шины RabbitMQ, кодировка сообщения известна. Я их сохраняю в свой буфер, буфер на MSSQL он XML хранит в UTF16. При маштабировании могут появляться новые кодировки Не делайте буфер на MS SQL. Ну если делаете, то храните XML в BLOB-ах. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 07:26 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mad_nazgul, +1 Аффтар, 1. Вы не читаете что вам пишут. Сиквел хранит любую кодировку. 2. Не используйте сиквел. Итого проблема высосана из пальца. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 08:03 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mad_nazgul, +1 Аффтар, 1. Вы не читаете что вам пишут. Сиквел хранит любую кодировку. 2. Не используйте сиквел. Итого проблема высосана из пальца. Petro - к сожалению вы не прочитали ту ссылку которую привели (я понимаю много букв) . Покажу пальцем. https://docs.microsoft.com/ru-ru/sql/relational-databases/native-client/features/using-xml-data-types?view=sql-server-ver15 здесь описываются правила того как SQL сервер проводит конвертации в свой внутренний тип. Возьмите напр раздел ODBC " When converting from C to SQL data types, SQL_C_WCHAR, SQL_C_BINARY, and SQL_C_CHAR can all be converted to SQL_SS_XML, with the following stipulations: SQL_C_WCHAR: A BOM is always be added to data sent to the server. If the data already started with a BOM, this results in two BOMs at the start of the buffer. The server uses the first BOM to recognize the encoding as UTF-16 and then discard it. The second BOM is interpreted as a zero-width nonbreaking space character. SQL_C_BINARY: No conversion is performed, and the data is passed to the server "as is." UTF-16 data must start with a BOM; if it does not, the encoding may not be correctly recognized by the server. SQL_C_CHAR: The data is converted to UTF-16 on the client and sent to the server just as SQL_C_WCHAR (including the addition of a BOM). If the XML is not encoded in the client code page this can cause data corruption. " Про OleDB аналогично. Я думаю это достаточно для понимания что проблема существует и SQL сервер хранит XML тип в UTF-16. Если спросите гугл "ms sql xml utf-8 utf-16 " там будет куча подобных проблем. Больше я бы не хотел обсуждать постановку задачи, поскольку для меня проблема очевидна P S Версия SQL у меня 2008r2 , в более старших там не лучше , кому интересно см тут https://techcommunity.microsoft.com/t5/sql-server/introducing-utf-8-support-for-sql-server/ba-p/734928 они расширили поддержку для строковых типов но для XML колонок нет Кстати SQL вообще на внутренних типах сидит на UTF-16 на всех типах и только с 2019 го там начали UTF-8 внедрять Более того Db2 тоже этим страдает https://www.ibm.com/support/knowledgecenter/SSEPEK_11.0.0/java/src/tpc/imjcc_c0021816.html ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 13:44 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mad_nazgul Не делайте буфер на MS SQL. Ну если делаете, то храните XML в BLOB-ах. :-) А зачем в SQL XML колонки как специальный тип? Подумали? ..... а ну конечно чтобы XMLQuery использовать XPath и вообще много чего интересного. Нельзя узко мыслить в современном мире, иначе XML будет восприниматься как обычный текст с тегами, без валидации по схеме и без применения стека XML технологий. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 13:49 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 mad_nazgul Не делайте буфер на MS SQL. Ну если делаете, то храните XML в BLOB-ах. :-) А зачем в SQL XML колонки как специальный тип? Подумали? ..... а ну конечно чтобы XMLQuery использовать XPath и вообще много чего интересного. Нельзя узко мыслить в современном мире, иначе XML будет восприниматься как обычный текст с тегами, без валидации по схеме и без применения стека XML технологий. Вы правы наполовину. Если используете запросы к XML, то дайте пример. Если нет, то оверхед по архитектуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 13:53 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Если для вас проблема с сиквелом очевидна, значит вам не трудно дать ссыль на нее с нашего форума по сиквелу? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 13:58 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вы правы наполовину. Если используете запросы к XML, то дайте пример. Если нет, то оверхед по архитектуре. Perto прошу не участвовать в обсуждении, я не собираюсь рассказывать всю свою архитектуру для этого есть другой раздел форума https://www.sql.ru/forum/systems-architecture . Как говорится не знаете ответа пройдите мимо ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 14:00 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 Самое удивительное если сообщение передать в UTF-8 но заголовок поправить на encoding="UTF-16" передача в SQl пройдет нормально. Возможно из за того что Java хранит строки внутри в Utf-16 по некоторым источникам. В общем хотелось бы услышать Best practice , не хочется писать костыли Несколько мыслей. 1) Непонятно зачем это делать. Utf-8 достаточно удобная кодировка. И должна быть поддержана всеми средствами чтения текстовых документов. 2) Xml - это не просто текст. Это документ с множеством уровней или слоёв семантики и каждый раз когда вы его процессите вы должны правильно реагировать на разные действия. Как-то реакция на XML-entities. Что делать? Разворачивать или нет? Блоки обработки инструкций и стилевая транфсормация. Теоретически к документу может быть пристёгнут скрипт xslt который что-то с ним делает при отображении. Будете-ли вы его тоже обрабатывать? Или нет? Вопрос. Далее. Indentations, переводы строк и форматирование. Если документ внизу в footer содержит ЭЦП тогда это действие надо делать аккуратно чтоб сигнатура не сломалась. Иначе документ станет с невалидной подписью. Здесь я не готов пока приводить все аргументы но еще во времена развития SOAP были рекомендации по тому как вычислять ЭЦП с учотом например пробелов или переносов в меж-теговом пространстве. И разные парсеры (Sax, Stax, Saxon, Xerces, LibXML, MSXml) могли по разному интерпретировать поток тегов. Кто-то брал во внимание форматирование и кто-то нет. Вобщем при прочих равных условиях лучше ничего не трогать и оставить как есть. Тоесть просто смена кодировки - ну возьмите Reader/Writer с кодировками и сделайте. Как только вы захотите более технологичный вариант - поднимутся "технологичные" вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 14:01 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Добро пожаловать в публичный форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 14:04 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Если мне идти в "разработка ИС" тогда вам в ветку сиквела. Вдруг вы дезу гоните. А мы запомним)) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 14:06 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 mad_nazgul Не делайте буфер на MS SQL. Ну если делаете, то храните XML в BLOB-ах. :-) А зачем в SQL XML колонки как специальный тип? Подумали? ..... а ну конечно чтобы XMLQuery использовать XPath и вообще много чего интересного. Нельзя узко мыслить в современном мире, иначе XML будет восприниматься как обычный текст с тегами, без валидации по схеме и без применения стека XML технологий. Э-э-э я о том, что не надо решать задачу, не удобными инструментами. Если нужен буфер/кэш, то для этого есть другие инструменты, которые заточены под эту работу. Запихивать все в БД, это так себе идея. Когда мне говорят, что собираются хранить в БД JSON или XML у меня первый вопрос "Зачем?", второй "Можно ли этого не делать?", третий "Можно ли хранить данные в РМД?" и т.д. Т.к. хранение в "гибких форматах" в БД это просто оправдание "кривой архитектуры". Либо у вас приложение не зависит от системы хранения данных. Так что можно достаточно безболезненно можно поменять одно хранилище на другое. Либо у вас появлется жуткокостыльный монстр, которой потом будут разгребать за вами. Хорошо если быстро похоронят. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 15:22 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Dmitry. наличие xml заголовка типа <?xml version="1.0" encoding="UTF-8" standalone="yes"?> в java строке - абсурдно т.к. для получения строки уже была использована кодировка Код: java 1.
т.е. если в body есть заголовок encoding="windows-1251" а ты применил "UTF-8", то ты поломал кодировку сообщения. попробуй использовать TrueXML.setBinaryStream().write(body) вместо TrueXML.setString(messagetext) Код: java 1.
работает. Хотя непонятно тогда почему на том же сообщении в UTF-8 НЕ работает Код: java 1.
Судя по стандарту https://www.w3.org/TR/xml/#sec-guessing должно было работать, но видимо SQLXML от setString ждет чтото другого. Проверю еще на разных кодировках, спасибо за наводку ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 20:01 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mad_nazgul selis76 пропущено... А зачем в SQL XML колонки как специальный тип? Подумали? ..... а ну конечно чтобы XMLQuery использовать XPath и вообще много чего интересного. Нельзя узко мыслить в современном мире, иначе XML будет восприниматься как обычный текст с тегами, без валидации по схеме и без применения стека XML технологий. Э-э-э я о том, что не надо решать задачу, не удобными инструментами. Если нужен буфер/кэш, то для этого есть другие инструменты, которые заточены под эту работу. Запихивать все в БД, это так себе идея. Когда мне говорят, что собираются хранить в БД JSON или XML у меня первый вопрос "Зачем?", второй "Можно ли этого не делать?", третий "Можно ли хранить данные в РМД?" и т.д. Т.к. хранение в "гибких форматах" в БД это просто оправдание "кривой архитектуры". Я думаю что можно если на уровне бизнеса мы договариваемся что JSON-документ - атомарен с точки зрения БЛ и мы никогда никогда не будем модифицировать его поля в транзакциях и в кросс-зависимостях от других документов и не делать петель и дедлоков. Кстати посмотрите вот этот господин рассказывает что разрабатывал платёжные системы и он рекомендует JSON(B) в PG. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 20:19 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mayton Я думаю что можно если на уровне бизнеса мы договариваемся что JSON-документ - атомарен с точки зрения БЛ и мы никогда никогда не будем модифицировать его поля в транзакциях и в кросс-зависимостях от других документов и не делать петель и дедлоков. Договариваться можно о чем угодно. Этот договор ничего не стоит, потому что бизнес придет через неделю после того, как договорились и скажет, что им срочно надо постоянно менять JSON. Ну это как бы нормальное поведение. А потом выясниться, что по этим JSON-ам нужно аналитику делать, да еще "по времени". Хорошо, если не вляпаться во что-то вроде бюджетирования. Когда нужно один и тот же документ иметь сразу в нескольких вариантах, плюс возможность работы одновременно нескольких человек с логгированием изменений каждого (читай система контроля версий) Сам участвовал в проекте, где "архитекторы" решили все данные хранить в JSON (MS SQL) Для ввода данных было еще норм, но пользователи постоянно жаловались на тормоза. А вот когда приступили к отчетам, то базисты "вешались". Запросы по несколько часов. БД вставала колом. В конце концов решили делать отдельную БД для построения отчетов. Нормализованную без JSON. И вся идея "гибкости ввода" пошла по бороде. Т.к. нужно было постоянно отслеживать изменения в JSON. Менять скрипты загрузки и менять структуру БД для отчетов. ИМХО там БД нужна была, как телеге пятая нога. Т.е. данные прогонялись по Event Sourcing, в архитектуре CQRS. А для отчетов нужно было брать что-то вроде Hadoop. Тогда может быть было бы полегче. А так. Взяли худшее из двух "миров" и огребли проблемы по полной. mayton Кстати посмотрите вот этот господин рассказывает что разрабатывал платёжные системы и он рекомендует JSON(B) в PG. Ну и посмотрите последние доклады Бартунова по поводу перформанса JSON. Смотрел. Сам же Бартунов, говорит, что хранить данные в JSON - плохая идея. БД можно положить "на раз, два". И сам расказывал про кейсы, когда их приглашали проконсультировать, как выбраться из JSON-жопы. Да. Возможность есть. Да работает достаточно быстро. Но стоить систему на данной фиче не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 07:11 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mad_nazgul А так. Взяли худшее из двух "миров" и огребли проблемы по полной. Ну так понятно, что надо было сразу брать монгу и всё бы работало нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 08:17 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mad_nazgul Договариваться можно о чем угодно. Этот договор ничего не стоит, потому что бизнес придет через неделю после того, как договорились и скажет, что им срочно надо постоянно менять JSON. Я не понимаю к чему ты клонишь. Требования могут меняться. Это правда. Но из этого не следует что любой входящий документ в систему нужно тут-те нормализовывать и раскладывать по табличкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 08:52 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mad_nazgul, у вас там какая то своя боль по поводу хранения в форматах XML Json и вы куда то повели далеко от темы Как я ранее написал " Я их сохраняю в свой буфер, буфер на MSSQL" это именно буфер. Шина не может долго хранить очередь, а вот исходники сообщений нужно гдето хранить для последущей загрузки в структуры реляционной базы данных. В XML колонках это удобно, допустим загрузили из буфера данные в таблицы СУБД, а по истечении времени понадобилось вытащить из сообщений еще один реквизит - просто сканируем буфер еще раз и добавляем его + в регулярный код. При наличии буфера всегда можно предъявить исходник сообщения, по которому создали документ или операцию в таблицах СУБД. Плюсов много не буду все перечислять,.Естественно использовать XML колонки для аналитических отчетов это противопоказано - просто технологически нет достаточных средств для этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 11:39 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Так зачем для этого mssql? Выкинь её, раз с ней проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:02 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
crutchmaster Почему бы и нет. Mongo + Elastic Serach. Если таки нужна БД, то либо из Mongo, либо паралельно с ней сохраняем в СУРБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:06 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mayton mad_nazgul Договариваться можно о чем угодно. Этот договор ничего не стоит, потому что бизнес придет через неделю после того, как договорились и скажет, что им срочно надо постоянно менять JSON. Я не понимаю к чему ты клонишь. Требования могут меняться. Это правда. Но из этого не следует что любой входящий документ в систему нужно тут-те нормализовывать и раскладывать по табличкам. Я с этим не спорю. Просто не надо использовать СУРБД для хранения ненормализованных данных. Там для этого слишком много накладных расходов, связанных с ACID. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:08 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 mad_nazgul, у вас там какая то своя боль по поводу хранения в форматах XML Json и вы куда то повели далеко от темы Как я ранее написал " Я их сохраняю в свой буфер, буфер на MSSQL" это именно буфер. Если это кэш, то MS SQL для этого самое не подходящее решение. Есть другие решения, которые справляются гораздо лучше и с меньшими накладными расходами. Та же mongo. Если данных не слишком много, то можно In Memory DB. Ну или вообще заменить вашу MQ на kafka, которая по умолчанию хранить сообщение 7 суток, этот параметр можно изменять. Вы выбрали, самое не удачное решение, теперь боретесь с его последствиями. ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:12 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Вы упрямы. Взяли бы еще оракл). Вам говорят, что получилась каша. В том числе из терминов. Кеш? Буфер? Архив? Логирование? OLAP / OLTP? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:17 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, автора по истечении времени понадобилось вытащить из сообщений еще один реквизит - просто сканируем буфер еще раз и добавляем его + в регулярный код. Вчерашним числом? Апдейт кода без новой версии? Пример изменения кода не трудно привести? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:21 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mad_nazgul selis76 mad_nazgul, у вас там какая то своя боль по поводу хранения в форматах XML Json и вы куда то повели далеко от темы Как я ранее написал " Я их сохраняю в свой буфер, буфер на MSSQL" это именно буфер. Если это кэш, то MS SQL для этого самое не подходящее решение. Есть другие решения, которые справляются гораздо лучше и с меньшими накладными расходами. Та же mongo. Если данных не слишком много, то можно In Memory DB. Мне кажется ты уже третий раз киваешь подбородком на mongo. Давай посмотрим цены на Amazon инстнции посуточно и может так окажется что mongo/PG лежат вообще в одной ценовой категории. (я имею в виду что цена не будет отличаться на порядки). Тогда все равно что покупать. А PG даст опцию. Или возможность добавить что-то реляционное. Монго такого точно не даст. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:29 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mayton, Какой еще амазон? Только облако от антрилоси.ком! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:30 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Ради бога. Тогда давайте в обсуждение внесем еще прейскурант на другие услуги и топик будет в плоскости обсуждения как чего сделать дешевле. Я не против вобщем. Инженер - должен быть еще и хозяйственник. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:33 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Почему в буфере НЕ ИСХОДНОЕ сообщение в байтовом или символьном виде? Код загрузки то одинаков. С течением времени вы решили достать ветку ИмяЛюбовницы...... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:34 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Так ка сроки хранения буфера НА ДИСКЕ вы не указали, то такой юз кейс. Вы раскурочили и перекодировали xml 15 летнюю на кредит. Потом команда Продлить его. А исходного то нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:43 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 Dmitry. наличие xml заголовка типа <?xml version="1.0" encoding="UTF-8" standalone="yes"?> в java строке - абсурдно т.к. для получения строки уже была использована кодировка Код: java 1.
т.е. если в body есть заголовок encoding="windows-1251" а ты применил "UTF-8", то ты поломал кодировку сообщения. попробуй использовать TrueXML.setBinaryStream().write(body) вместо TrueXML.setString(messagetext) Код: java 1.
работает. Хотя непонятно тогда почему на том же сообщении в UTF-8 НЕ работает Код: java 1.
Те кто писал библиотеку тоже люди тут скорее всего просто берется кодировка платформы. Код: sql 1.
здесь Код: sql 1.
кодировка выдергивается из Код: sql 1.
в этом заголовке только ascii символы так можно читать в нескольких кодировках и везеде правильно прочитается UTF8, latin, ascii ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:45 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Для истории можно было туловище документов писать в Log4j2 с ротацией и архивацией в gzip. И пускай себе лежит. Обслуживание - минимальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:45 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mad_nazgul selis76 mad_nazgul, у вас там какая то своя боль по поводу хранения в форматах XML Json и вы куда то повели далеко от темы Как я ранее написал " Я их сохраняю в свой буфер, буфер на MSSQL" это именно буфер. Если это кэш, то MS SQL для этого самое не подходящее решение. Есть другие решения, которые справляются гораздо лучше и с меньшими накладными расходами. Та же mongo. Если данных не слишком много, то можно In Memory DB. Ну или вообще заменить вашу MQ на kafka, которая по умолчанию хранить сообщение 7 суток, этот параметр можно изменять. Вы выбрали, самое не удачное решение, теперь боретесь с его последствиями. ;-) Это именно буфер истории сообщений, сообщение как правило читается максиму 2 -3 раза при импорте в субд. За год может набежать 5 терабайт. Если хотите предложить лучшее решение нужно видеть полную картину и уже от нее думать, но я не дал достаточно информации чтобы думать ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:47 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
[quot lleming#22147983] selis76 пропущено... ... здесь Код: sql 1.
кодировка выдергивается из Код: sql 1.
в этом заголовке только ascii символы так можно читать в нескольких кодировках и везеде правильно прочитается UTF8, latin, ascii Ну тогда это то что нужно, исходники интересно для Jdbc можно смотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:50 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76, Да кидай всё на диск в gzip. Зачем тебе эти субд? Надо будет что-то выбрать, вычитаешь с файла и распарсишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:52 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
crutchmaster selis76, Да кидай всё на диск в gzip. Зачем тебе эти субд? Надо будет что-то выбрать, вычитаешь с файла и распарсишь. мне тут смайликов недостаточно что выразить эмоции ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 12:58 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 мне тут смайликов недостаточно что выразить эмоции Бери мои. Да что такого? Сейчас ФС такие, что работают не хуже, чем субд в некоторых вещах. Ставишь этот модный zfs и вперёд. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 13:03 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 crutchmaster selis76, Да кидай всё на диск в gzip. Зачем тебе эти субд? Надо будет что-то выбрать, вычитаешь с файла и распарсишь. мне тут смайликов недостаточно что выразить эмоции Ты-же понимаешь что над 1 постом обычно больше смеются. Пафоса-то больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 13:03 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
crutchmaster Zfs какраз не очень быстрый. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 13:04 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mayton, Да зачем ему сильно быстрый? Главное, чтобы всё на месте осталось в случае чего и можно было откатываться. Транзакции им нахрен не нужны, там микросервисы с xml, какое-то хитрое индексирование, триггеры тоже. Надо будет аналитику, пробегутся по куче файлов, засунут что надо в субд, да посчитают. Что-то надо real-time - тоже отдельно, зачем 5тб/год тащить в субд? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 13:14 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Для такого архива вообще не нужны транзакции. Только write-only. Идемпотентность. И политика бекапа чтоб хотя-бы в двух разных датацентрах лежала копия. И гонять по нему Kibana для человеческого поиска. Она кстати прекрасно справляется с gzip архивами и поиском по логам. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 13:23 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
crutchmaster, Согласен. Они смешали боевую Модель данных (непротиворечивую и валидированную) и архив входных сообщений терабайтных. Причем перекодированных. авторЭто именно буфер истории сообщений, сообщение как правило читается максиму 2 -3 раза при импорте в субд. За год может набежать 5 терабайт. Если хотите предложить лучшее решение нужно видеть полную картину и уже от нее думать, но я не дал достаточно информации чтобы думать ;) Ну дак мы и заключили по твоему молчанию что постановка - Г. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 14:18 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Так бывает. Приходит чел к терапевту. С фурункулом на щеке. Врач смотрит ему в глаза. Качает головой. Говорит ану-ко давай-ко мы тебя послушаем. И пошло... и острый живот у него с гастритом. И простатит размером с арбуз. С техикордия пошаливает ... ну короче направлений надо писать на 20 больниц еще и обследований. Так и в топике. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 15:28 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mayton, Это плата за бесплатную техподдержку. Топик собственность форума). Поэтому буффер мессаннджей нестираемый. И никому в голову не придет рядом хранить исходные посты юзверей. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 15:52 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
selis76 Самое удивительное если сообщение передать в UTF-8 но заголовок поправить на encoding="UTF-16" передача в SQl пройдет нормально. такое обычно говорит о том что xml руками собирают конкатенацией, заголовок тупо приклеили к телу ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 23:21 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Во времена 2000 офиса и старого JasperReports я придумал как разогнать тормозное формирование отчотов. Мы просто делали docx-документ шаблон а потом я обычными текстовыми операциями "врезал" в него реквизиты в особые места помеченные тегами типа ${fucken.userName} e.t.c. Это было херово с точки зрения архитектуры зато быстро. Вот этот xml-хидер напомнил мне. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 23:31 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mayton Это было херово с точки зрения архитектуры зато быстро. Да я вообще не всегда понимаю это религиозное соблюдение чистоты архитектуры, когда оно выходит тормозами и не нужными сложностями. Велосипеды наше всё! Велосипеды сейчас лучше, чем костыли потом![br] Что тс вообще смущается? Ну поменял бы в заголовке 8 на 16, за забил. Зачем вот это вот всё фи "не красиво", "не архитектурно", "костыли". Не надо стесняться простых и эффективных решений! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 06:33 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Ради отвлеченного примера. Любой процесс бэкапа базы данных - это по сути баланс между скоростью и совместимостью. Те кто хотят совместимости - делают экспорты либо в SQL-скрипт либо специальный бинарь толерантный к last-big endian как делает Oracle. Те кто хочет скорости - делает физическоую файловую копию но рискует эту копию не поднять в новой версии софта или в другой разрядности железа к примеру. И здесь нет единого правильного решения. Т.к. время бэкапа тоже является важным фактором безопасности резервной копии. Если логическая копия делается медленнее чем накатываются новые данные (снимок устареет) то ее надо ресетнуть и начать заново и так до бесконечности. В нашем случае с XML - если модификация заголовка решает проблему - то пускай автор так и делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 08:47 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mayton, Добавил новый метод для библиотеки из соседней ветки 17790633 . Код: java 1.
При записи в файл нужно переконвертировать строку в нужную кодировку. Код: java 1.
Хорошего вам дня! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:48 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Valentin Kolesnikov, шикарно. А у тебя появились идеи насчет управления форматированием Yaml для конвертера? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 11:51 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mayton Valentin Kolesnikov, шикарно. А у тебя появились идеи насчет управления форматированием Yaml для конвертера? Да, добавил форматирование 2,3,4 (число пробелов отступов). Хорошего вам дня! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 12:02 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Valentin Kolesnikov, а есть возможность управлять форматирование арреев избирательно? Пример Код: java 1. 2. 3. 4. 5.
Мне удобно вести прокси-лист в вертикальном форматировании. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 12:11 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
mayton Valentin Kolesnikov, а есть возможность управлять форматирование арреев избирательно? Пример Код: java 1. 2. 3. 4. 5.
Мне удобно вести прокси-лист в вертикальном форматировании. Можно поискать настройку для snakeyaml. Хорошего вам дня! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 13:05 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Valentin Kolesnikov mayton Valentin Kolesnikov, а есть возможность управлять форматирование арреев избирательно? Пример Код: java 1. 2. 3. 4. 5.
Мне удобно вести прокси-лист в вертикальном форматировании. Можно поискать настройку для snakeyaml. Хорошего вам дня! Может быть эта настройка поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 16:07 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Valentin Kolesnikov, я смотрел DumperOptions. Он ставит свойства на весь документ. А мне надо управлять форматом отдельных узлов независимо. Возможно я чего-то хочу "странного" ? Ну да. Просто мне поадались такие конфиги которые иногда было удобно в столбик писать а иногда строкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 16:17 |
|
Преобразовать XML utf-8 в utf-16 вместе с заголовком
|
|||
---|---|---|---|
#18+
Zzz79 LinkedList на 50 элементов? за такое надо бить по рукам,так как потом нубы посмотрят и начнут плодить их в реальных проектах - устанешь убирать на ревью Это часть документации для snakeyaml. Автор библиотеки выбрал LinkedList почему-то. Хорошего вам вечера! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 20:51 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120786]: |
0ms |
get settings: |
17ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
1014ms |
get tp. blocked users: |
2ms |
others: | 330ms |
total: | 1473ms |
0 / 0 |