За последние 24 часа нас посетили 20415 программистов и 1303 робота. Сейчас ищут 648 программистов ...

Кодировка строки возвращаемой из функции

Тема в разделе "MySQL", создана пользователем alex-777, 24 мар 2024.

  1. alex-777

    alex-777 Активный пользователь

    С нами с:
    11 апр 2019
    Сообщения:
    33
    Симпатии:
    0
    Всем привет,

    На одном сервере Mysql столкнулся с проблемой.
    Есть функция, которая возвращает имя по коду.

    Таблица regions
    Код (Text):
    1. id integer
    2. name varchar(128)
    В phpMyAdmin запрос
    Код (Text):
    1. select id, name from regions;
    возвращает все как нужно.

    Функция get_reg_name
    Код (Text):
    1. BEGIN
    2.  
    3.   DECLARE regname varchar(128) DEFAULT "";
    4.  
    5.   SELECT
    6.     reg_name INTO regname
    7.   FROM regions
    8.   WHERE reg_id = regid;
    9.  
    10.   RETURN regname;
    11.  
    12. END
    И запрос
    Код (Text):
    1. select id, name, get_reg_name(id) as region from regions;
    вместо возвращаемого значения из функции ставит знаки вопроса.
    При доступе через php абракадабра. Для возвращаемого значения из функции стоит кодировка utf8, все как и на других хостингах. Дамп базы один и тот же.

    Что это может быть?

    Спасибо
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.753
    Симпатии:
    1.322
    Адрес:
    Лень
    php в windows-1256
     
  3. alex-777

    alex-777 Активный пользователь

    С нами с:
    11 апр 2019
    Сообщения:
    33
    Симпатии:
    0
    Вопрос в том, что из таблицы возвращается строка в правильной кодировке, но эта же строка через function в phpMyAdmin возвращается, как строка из ?????????????
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Как-то так:
    (Из просторов интернета)
     
  5. alex-777

    alex-777 Активный пользователь

    С нами с:
    11 апр 2019
    Сообщения:
    33
    Симпатии:
    0
    Так там все правильно. И phpMyAdmin и сайт на php, все, что выбирается из базы данных отображает правильно, кроме строк, выбираемых через функции mysql. На одном сервере помогло явное указание кодировки
    Код (Text):
    1. RETURNS varchar(128) CHARSET utf8mb4
    вместо
    Код (Text):
    1. RETURNS varchar(128) CHARSET utf8
    при загрузке дампа базы данных. Видать все зависит от настроек mysql по умолчанию.
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
  7. alex-777

    alex-777 Активный пользователь

    С нами с:
    11 апр 2019
    Сообщения:
    33
    Симпатии:
    0
    Проблема была не только с php, а и с самой базой данных. Данные из таблиц выбирались правильно, проблема с кодировкой была только с возвращаемыми параметрами из пользовательских функций.