Расшифровать строку Unicode из столбца json в mysql - PullRequest
0 голосов
/ 16 июня 2020

У меня есть столбец json в mysql, который содержит такие значения, как:

{"value_1": "Cancu00fan", "value_2":"Other value"}

Я пытаюсь получить свойство value_1. Мне нужно, чтобы это значение было декодировано ("Cancún"), я ' m делает это:

SELECT convert(json_field->>"$.value_1" USING latin1) FROM example_table;

, но я все еще получаю:

"Cancu00fan"

Когда я вставляю данные, я вставляю данные как:

 {"value_1": "Cancún", "value_2":"Other value"}

Но MySQL кодирует его автоматически, есть предложения?

1 Ответ

0 голосов
/ 17 июня 2020

не то, что хотелось бы, но у меня работает

    CREATE DEFINER=`root`@`localhost` FUNCTION `convertunicode`(encoded varchar(100))
    RETURNS varchar(100) CHARSET utf8mb4
    BEGIN
        DECLARE decoded VARCHAR(20);
        SET decoded = encoded;
        SET decoded = replace(decoded, "u00e1", "á");
        SET decoded = replace(decoded, "u00e9", "é");
        SET decoded = replace(decoded, "u00ed", "í");
        SET decoded = replace(decoded, "u00f3", "ó");
        SET decoded = replace(decoded, "u00fa", "ú");
        SET decoded = replace(decoded, "u00c1", "Á");
        SET decoded = replace(decoded, "u00c9", "É");
        SET decoded = replace(decoded, "u00cd", "Í");
        SET decoded = replace(decoded, "u00d3", "Ó");
        SET decoded = replace(decoded, "u00da", "Ú");
        SET decoded = replace(decoded, "u00f1", "ñ");
        SET decoded = replace(decoded, "u00d1", "Ñ");
    RETURN decoded;
    END
...