Вставка русских символов в MySQL с использованием процедуры

Процедуры в MYSQL очень удобная вещь, однако, при использовании русских (или других символов unicode) можно натолкнуться на неприятность с кодировкой.

И так пример:
Создаем таблицу:
CREATE TABLE `friends` (
`Id` int(11) NOT NULL auto_increment,
`friend_name` varchar(255) default NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Создаем процедуру, согласно пример из документации MySQL:


DELIMITER //
CREATE PROCEDURE `addFriend`(
IN FName VARCHAR(255))
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ”
BEGIN
insert into `friends`(`friend_name`) values (FName);
END;
DELIMITER ;

Это процедура сработает, однако в поле friend_name будут знаки вопроса


DELIMITER //
CREATE PROCEDURE `addFriend`(
IN FName VARCHAR(255) charset utf8 )
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ”
BEGIN
INSERT INTO `friends`(`friend_name`) values (convert(FName USING utf8));
END;
DELIMITER ;

После вызова:
mysql> CALL addFriend('Кто твой друг');

Содержимое поля будет в правильной кодировке.

Метки: , , ,

Подобные

НУБЕС запускает сервис комплексной защиты веб-приложений (WAF)НУБЕС запускает сервис комплексной защиты веб-приложений (WAF)

Новый сервис защитит веб-сервисы клиентов НУБЕС от атак, способных вызвать остановку работы приложения, утечку данных и несанкционированный доступ к корпоративным ресурсам.

«СМИС Эксперт» и НТП «Горизонт» реализуют пилотный проект по созданию системы геотехнического мониторинга для «Норникель»«СМИС Эксперт» и НТП «Горизонт» реализуют пилотный проект по созданию системы геотехнического мониторинга для «Норникель»

Компания «СМИС Эксперт» совместно с НТП «Горизонт» осуществит пилотный проект по разработке и внедрению информационной системы геотехнического мониторинга объекта ТЭЦ-1 (г. Норильск), для АО «Норильско-таймырская энергетическая компания» (АО «НТЭК»)  

Яндекс.Метрика level: 4