2016-11-27 2 views
0

Я хочу хранить в уникальных гравюрах и немецких знаках. Когда я изменить базу данных:Польские и немецкие акцентированные буквы в mysql

alter database osa character set utf8 collate utf8_general_ci; 

У меня есть проблема с немецкими знаками.

sql> insert into company(uuid, name) VALUE ("1","IDE") 
[2016-11-27 10:37:35] 1 row affected in 13ms 

sql> insert into company(uuid, name) VALUE ("2","IDĘ") 
[2016-11-27 10:37:37] 1 row affected in 9ms 

sql> insert into company(uuid, name) VALUE ("3","Schuring") 
[2016-11-27 10:37:38] 1 row affected in 13ms 

sql> insert into company(uuid, name) VALUE ("4","Schüring") 
[2016-11-27 10:37:39] [23000][1062] Duplicate entry 'Schüring' for key 'UK_niu8sfil2gxywcru9ah3r4ec5' 

Какой из них мне нужно использовать?

Edit:

Также не работает для utf8_unicode_ci

ответ

0
alter database osa character set utf8mb4 COLLATE utf8mb4_bin; 

Работы для меня. @Maciek Bryński благодарит вас за подсказку.

+0

The bin сделал это, а не «mb4». –

+0

@ RickJames. Я знаю. –

+0

Просто уточняю это для других. –

0

Заменить все вхождения utf8_general_ci с utf8_unicode_ci вместо этого. utf8_general_ci нарушается, по-видимому: What are the diffrences between utf8_general_ci and utf8_unicode_ci?

utf8_general_ci очень просто - и на Unicode, очень сломан - сверка, тот, который дает неверные результаты на общем тексте Unicode.

+0

utf8_unicode_ci не работает для знаков польского языка –

+1

Технически говоря, ut8_unicode_ci нарушен, исправлено utf8_unicode_520_ci. С 8.0 существует еще более новый стандарт: utf8mb4_unicode_900_ci. –

0

Возможно, вам стоит попробовать utf8mb4_unicode_ci?

Шрифт Utf8 не может хранить все символы utf8.

https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html

+0

К сожалению, пока не работает :( –

+0

sql> вставить в компанию (имя) VALUE («IDE») [2016-11-27 22:45:22] 1 ряд пострадавших в 13 мс sql> вставить в компанию (имя) VALUE («IDĘ») [2016-11-27 22:45:24] [23000] [1062] Дублируемая запись 'IDĘ' для ключа 'UK_name' –

+0

Все европейские символы покрываются обоими наборами символов. –

1

_ci в COLLATION указывает на «знак нечувствительный». К сожалению, это также означает «без акцента». Таким образом, чтобы получить E и Ę для лечения по-разному, вам нужна сортировка _bin - либо utf8_bin, либо utf8mb4_bin.

mb4 необходим для Эмодзи и китайцев, а также некоторые неясные вещи.

Смежные вопросы