Как сохранить двоичные данные (со старшими байтовыми значениями) в строку MySQL Unicode

У меня есть устаревшая система, которая отправляет и читает двоичные данные в существующую таблицу MySQL (версия 5.6.34 на случай, если это имеет значение). Мне нужно записать данные такого же типа в те же таблицы в нашей новой системе (чтобы части старой системы могли их читать). Тем не менее, когда я пытаюсь записать двоичные данные, MySQL, похоже, обрезает все, что находится в верхнем байтовом диапазоне (возможно, то, что не является допустимым Unicode).

Я не могу изменить таблицу. Как мне написать те же данные. (Старая система использует бинарный драйвер mysql на другом языке, поэтому я не могу воспроизвести все, что она делает).

mysql> create table foobar (a_session longtext character set utf8 collate utf8_general_ci);
Query OK, 0 rows affected (0.14 sec)

mysql> insert into foobar values (_binary X'4D798053514C');
Query OK, 1 row affected, 1 warning (0.12 sec)

mysql> select * from foobar;
+-----------+
| a_session |
+-----------+
| My        |
+-----------+
1 row in set (0.13 sec)

Я хочу команду обновления / вставки, которая вместо этого будет отображать что-то вроде:

| My�SQL     |

и имеют те же двоичные байты, которые я отправляю в команде.

1 ответ

При выполнении этого небольшого теста, также предоставьте

SHOW VARIABLES LIKE 'char%';

80 не очень хороший "персонаж":

big5, binary, cp932, eucjpms, euckr, gb2312,
           gbk, sjis, ujis, utf8, utf8mb4   0  0 ''
                              ascii, swe7   1  1 '?'
armscii8, dec8, greek, hebrew, hp8, latin2,
                   latin5, latin7, tis620   2  1 ''
                                   cp1251   2  1 'Ђ'
                    cp850, cp852, keybcs2   2  1 'Ç'
                                    cp866   2  1 'А'
                          macce, macroman   2  1 'Ä'
  cp1250, cp1256, cp1257, geostd8, latin1   3  1 '€'
                             koi8r, koi8u   3  1 '─'

То есть, latin1 (и несколько других CHARACTER SETs) интерпретировать гекс 80 как Euro; другие кодировки дают вам менее интересные вещи. Чего ты ожидал??

Другие вопросы по тегам