У меня проблемы с турецкими персонажами, как я упоминал в названии. Я создал функцию на MySQL:Турецкий кодировка символов с MySQL
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `ilgiAlaniFunc`(
idKullanici INT,
ilgi_alani_ismi varchar(255) CHARSET utf8 COLLATE utf8_turkish_ci
) RETURNS varchar(255) CHARSET utf8 COLLATE utf8_turkish_ci
READS SQL DATA
DETERMINISTIC
BEGIN
-- Function logic here
DECLARE ret int DEFAULT -1;
select id Into ret from ilgi_alanlari
where ilgi_alani_adi=ilgi_alani_ismi limit 1;
IF(ret = -1) then
INSERT INTO ilgi_alanlari(ilgi_alani_adi) values (ilgi_alani_ismi);
SELECT last_insert_id() into ret;
END IF;
insert into kullanici_ilgi_alani(kullanici_id, ilgi_alani_id)
values (idKullanici, ret);
RETURN ret;
END
Это свалка запросов, я бегу:
111 Connect [email protected] on anketsis_main
111 Query select ilgiAlaniFunc(43,'kıvılcım')
111 Query select id Into ret from ilgi_alanlari where ilgi_alani_adi= NAME_CONST('ilgi_alani_ismi',_utf8'k' COLLATE 'utf8_turkish_ci') limit 1
111 Query insert into kullanici_ilgi_alani(kullanici_id, ilgi_alani_id) values (NAME_CONST('idKullanici',43), NAME_CONST('ret',54))
Здесь вы можете увидеть, что «Kivilcim» превращается в «к». После первого турецкого символа MySQL после этого стирает все.
А вот правильный дамп:
120 Query select ilgiAlaniFunc(44,'Hello')
120 Query select id Into ret from ilgi_alanlari where ilgi_alani_adi= NAME_CONST('ilgi_alani_ismi',_utf8'Hello' COLLATE 'utf8_turkish_ci') limit 1
120 Query INSERT INTO ilgi_alanlari(ilgi_alani_adi) values (NAME_CONST('ilgi_alani_ismi',_utf8'Hello' COLLATE 'utf8_turkish_ci'))
120 Query SELECT last_insert_id() into ret
120 Query insert into kullanici_ilgi_alani(kullanici_id, ilgi_alani_id) values (NAME_CONST('idKullanici',44), NAME_CONST('ret',56))
Как вы можете видеть, 'Hello' является 'Hello' во всем мире.
В моей схеме есть все настройки utf8_turkish_ci. Редактировать: Я заметил, что мой вопрос не включает в себя вопрос. Итак, вот он: как я могу заставить MySQL полагать, что я отправляю строки больше, чем думает
wow спасибо, что он работал как магия. – interlude
Вздох ... заставил меня смеяться, хотя хаха – Brendan