Поэтому я пытаюсь сохранить турецкие символы в своей базе данных, которая обычно работает с utf8_general_ci и UTF-8 на веб-сайте. Но поскольку этот проект из «Турции», я не могу успешно сохранить символы, введенные пользователями на их веб-сайте, в нашу базу данных.
В настоящее время сохраняется так:
Kırıkkale
İstanbul
Код, который я использую для преобразования символов в php перед сохранением в базу данных:
iconv("ISO-8859-1", "UTF-8", $city);
В шапке сайта я использую:
<html lang = "tr-TR">
<meta http-equiv = "Content-Type" content = "text/html; charset=iso-8859-9" />
Кто-нибудь знает, как я могу правильно закодировать это для читаемых данных? И есть ли шанс, что я могу изменить текущие сохраненные данные на читаемые данные?

Хорошо, спасибо, я следовал контрольному списку. Есть идеи, можно ли извлечь текущие сохраненные данные в читаемые данные турецких символов? Например, преобразовать İstanbul в читаемые данные: Istanbul ?
Если кодировка, с которой он хранится, уже искажена, это будет сложно. Вероятно, проще просто сбросить данные, если вы можете. Есть способы сделать это, если вы знаете исходную кодировку и что данные не искажены без возможности восстановления.
Множество советов в Интернете по исправлению искаженных строк, хранящихся в MySQL, например stackoverflow.com/q/29710565/318758.
Итак, я попробовал эти советы, но ни один из них не работает. Я добавил img базы данных с нечитаемыми символами.
Вы уже пытались «исправить» данные? Ваши симптомы не относятся к обычным вещам, таким как Моджибаке, а скорее к беспорядку из 2, может быть, 3 вещей, которые идут не так.






Предполагая, что вы начинаете с заглавной буквы I с точкой, а затем испеките ее 3 раза, вы можете получить İstanbul.
İ --> İ --> İ -> İ
В шестнадцатеричном формате (для utf8), то есть
C4B0 --> C384C2B0 --> C383E2809EC382C2B0 --> C383C692C3A2E282ACC5BEC383E2809AC382C2B0
For example, C4 B0 is the single character `İ` in utf8, but the 2 characters `İ` in latin1.
Моджибаке возникает, когда одна рука думает, что кодировка, скажем, utf8, а другая думает, что, скажем, latin1.
Для турецкого вам нужно оставаться с UTF-8 (который MySQL называет utf8 или utf8mb4)
CONVERT(BINARY(CONVERT(
CONVERT(BINARY(CONVERT('İ' USING latin1)) USING utf8mb4)
USING latin1)) USING utf8mb4)
превратит İ обратно в İ. Третья итерация должна исправить беспорядок, который у вас есть.
Вам необходимо установить кодировку UTF8 во всем приложении. Не смешивайте наборы символов, это только вызовет у вас головную боль. Ранее я писал ответ о кодировании, своего рода контрольный список об этом. Также есть гораздо более подробный UTF8 на всем протяжении