Страницы

Поиск по вопросам

вторник, 18 июня 2019 г.

Транслит в MySQL

При переносе сайта с одного хостинга на другой перестала работать функция транслита, на старом работает, на новом нет. Помогите пожалуйста понять в чем проблема. Запрос в phpmyadmin: SELECT translit_func('русский в траслит') Результат:aaaaaaa-a-aaaaaaa
DELIMITER $$ CREATE FUNCTION `translit_func`(`_txt` VARCHAR(250)) RETURNS text CHARSET utf8 BEGIN DECLARE _f varchar(5); DECLARE _t varchar(15); DECLARE done INT DEFAULT FALSE; DECLARE cur CURSOR FOR SELECT f,t from translit; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; open cur; the_loop: LOOP
#get the values of each column into our variables FETCH cur INTO _f,_t; IF done THEN LEAVE the_loop; END IF; set _txt=replace(_txt,_f,_t); END LOOP the_loop;
CLOSE cur; return _txt; END $$ DELIMITER ;
Таблица translit
CREATE TABLE IF NOT EXISTS `translit` ( `t` varchar(3) NOT NULL, `f` varchar(15) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `translit` (`t`, `f`) VALUES ('a', 'а'), ('b', 'б'), ('v', 'в'), ('g', 'г'), ('d', 'д'), ('e', 'е'), ('e', 'ё'), ('zh', 'ж'), ('z', 'з'), ('i', 'и'), ('y', 'й'), ('k', 'к'), ('l', 'л'), ... и т.д.


Ответ

Надо было поменять настройки базы, которые по умолчанию были не те что надо
character_set_database latin1 --> utf8 collation_database latin1_swedish_ci --> utf8_general_ci

Комментариев нет:

Отправить комментарий