При переносе сайта с одного хостинга на другой перестала работать функция транслита, на старом работает, на новом нет. Помогите пожалуйста понять в чем проблема.
Запрос в 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
Комментариев нет:
Отправить комментарий