Вход

Просмотр полной версии : WSTRING передаёт латиницу с пробелами



mad_kinder
16.01.2025, 11:48
Добрый день! Пытаюсь записать текст в приложение на C# (сначала в приложение потом приложение в базу)

в codesys делаю следующий запрос:
asSqlStatement1[0] :="INSERT INTO test_codesys (test_name, test_real) VALUES ($'добавка №11$', 15.89)";

при этом в wireshark видны отправленные данные, латиница отображается с пробелами I.N.S.E.R.T I.N.T.O , а кириллица нормально.
соответственно база выдаёт ошибку при таком запросе

Если переменную asSqlStatement1[0] делаю типа STRING то данные прилетают нормальные без пробелов, но кириллица не отображается в базе

как сделать так чтобы латинские буквы в типе WSTRING записывались без пробелов?

Евгений Кислов
16.01.2025, 12:31
Добрый день.
Какой контроллер вы используете?

Cs-Cs
16.01.2025, 12:35
Вроде как в WSTRING используется UNICODE. А там каждый символ занимает два байта.
А на SQL какая кодировка стоит? Если UTF-8, к примеру, то тогда ничего не совпадёт, так как как раз в UTF-8 латиница занимает 1 байт, а кириллица - два.

mad_kinder
16.01.2025, 13:08
Я использую СПК-110

mad_kinder
16.01.2025, 13:11
Вроде как в WSTRING используется UNICODE. А там каждый символ занимает два байта.
А на SQL какая кодировка стоит? Если UTF-8, к примеру, то тогда ничего не совпадёт, так как как раз в UTF-8 латиница занимает 1 байт, а кириллица - два.

Да всё верно можно ли как то собрать строку из WSTRING и STRING например в бинарном виде?


На стороне MySql менял кодировки всё равно присылает кракозябры....

Евгений Кислов
16.01.2025, 13:12
Я использую СПК-110

Напишите, пожалуйста, на support@owen.ru или мне в телеграм (см. в подписи).
Подготовьте доступ по AnyDesk.

mad_kinder
16.01.2025, 13:15
Пробовал пример где запись происходит через пример с linux терминал записывает в базу русские символы нормально

Евгений Кислов
16.01.2025, 13:17
Пробовал пример где запись происходит через пример с linux терминал записывает в базу русские символы нормально

Тогда рекомендую использовать наш пример.)

mad_kinder
16.01.2025, 13:44
всё разобрался проблема была на стороне приложения, сейчас с пробелами передаёт всё равно но приложению пофиг на эти пробелы и выполняет всё равно запрос.
ещё вопрос: а если я использую ваш пример как команда с linux терминала взаимодействует с БД MySQL в ядре контролеров овен что то стоит? и будет ли работать с любым linux терминалом?

Евгений Кислов
16.01.2025, 13:56
всё разобрался проблема была на стороне приложения, сейчас с пробелами передаёт всё равно но приложению пофиг на эти пробелы и выполняет всё равно запрос.
ещё вопрос: а если я использую ваш пример как команда с linux терминала взаимодействует с БД MySQL в ядре контролеров овен что то стоит? и будет ли работать с любым linux терминалом?

В состав прошивки наших контроллеров входит MySQL клиент (утилита mysql).
Что касается второго вопроса - что именно вы называете "любым linux терминалом"?

mad_kinder
16.01.2025, 14:01
В состав прошивки наших контроллеров входит MySQL клиент (утилита mysql).
Что касается второго вопроса - что именно вы называете "любым linux терминалом"?
понял
ядром вернее.
Можно ли как то установить этот пакет на другое устройство?

Евгений Кислов
16.01.2025, 15:27
понял
ядром вернее.
Можно ли как то установить этот пакет на другое устройство?

Лучше задать этот вопрос производителю "другого устройства".