Как использовать турецкую строчную букву ı в mysql

В mysql, когда пользователь пытается добавить объект char, содержащий заглавные буквы турецкого я, выдается ошибка. Я искал причину и узнал, что турецкий I смешивается с нижнетурецким ı и i в нижнем регистре. Есть ли способ использовать нижний турецкий ı на mysql? Мой сервер mysql - utf8_general и сопоставляется с utf8_general_ci. Может windows-1254 может помочь?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
64
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Подводя итог, вы не должны использовать верхний турецкий I ни в одном из ваших кодов. Это противоречит тому, что вы только что сказали. Windows 1254, безусловно, помогает решить проблему конфликта.

Я использовал windows1254, и это работает. Спасибо. Также windows1254 работает с арабскими буквами

Euxinos 13.10.2022 13:01

Я бы не стал использовать «общие» сопоставления в MySQL. Они старые и простодушные.

Какую версию MySQL вы используете? Для более старых версий я бы использовал utf8_unicode_520_ci или utf8_turkish_ci.

Из-за «без точки i» (ı) «правильно» работает только турецкое сочетание. (Хорошо, я не эксперт в том, как без точек я должен сравнивать.)

Глядя на http://mysql.rjweb.org/utf8_collations.html, я вижу следующие интересные строки:

utf8_turkish_ci
   I=ı  Ħ=ħ  i=Ì=Í=Î=Ï=ì=í=î=ï=Ĩ=ĩ=Ī=ī=Ĭ=ĭ=Į=į=İ  ij=IJ=ij  iz     J=j=j́=Ĵ=ĵ jz
utf8_unicode_520_ci 
           I=i=Ì=Í=Î=Ï=ì=í=î=ï=Ĩ=ĩ=Ī=ī=Ĭ=ĭ=Į=į=İ  ij=IJ=ij  iz  ı  J=j=j́=Ĵ=ĵ jz
utf8_general_ci   
           I=i=Ì=Í=Î=Ï=ì=í=î=ï=Ĩ=ĩ=Ī=ī=Ĭ=ĭ=Į=į=İ=ı  ij    iz     J=j=Ĵ=ĵ   jz  j́

Мне говорят, что строчная буква i без точки сравнивается с заглавной буквой I без точки и перед H! Но для большинства других сопоставлений строчная буква i без точки сравнивается между всеми буквами I и J.

Интересно, что пунктирная İ в верхнем регистре сравнивается с большинством I в большинстве сопоставлений.

При этом пунктирные и нет, верхние и нижние я сравниваю равными в utf8_general_ci.

Я не знаю, что происходит в windows-1254, но будьте осторожны.

Когда вы доберетесь до нового значения по умолчанию (utf8mb4), будет еще одна сортировка. Я не знаю, что с этим делать. Кажется, что некоторые акценты сопоставляются после некоторых других:

utf8mb4_tr_0900_ai_ci 
    I=Ì=Í=Î=Ï=Ĩ=Ī=Ĭ=Į=ı  i=ì=í=î=ï=ĩ=ī=ĭ=į=İ   ij=IJ=ij   iz   J=j=j́=Ĵ=ĵ  jz

Большое спасибо за ответ, я все учту. Я использую mysql 8.x. Также этого случая не произошло с другими моими серверами mysql. Так что я предполагаю, что эта ситуация возникает в последних версиях

Euxinos 14.10.2022 13:06

Если возможно, сделайте SHOW CREATE TABLE на обоих серверах — может быть разница, вызванная переходом на 8.0. Значения по умолчанию изменились; Я не могу придумать, как бы это изменило, скажем, COLLATION.

Rick James 14.10.2022 16:45

Я не могу получить доступ к консоли прямо сейчас. Я сообщу вам, как только получу логи. Спасибо большое за твою помощь

Euxinos 15.10.2022 17:24

Другие вопросы по теме