Это довольно просто, если вы просто используете Unicode везде.
- установить кодировки таблиц MySQL в UTF-8
- убедитесь, что вы говорите с базой данных в UTF-8 , запустив
SET NAMES utf8
- сохранить весь ваш исходный код в UTF-8
- при работе со строками в PHP, которые могут содержать символы UTF-8, используйте функции
mb_
- отправляет заголовки HTTP Content-Type, обозначающие, что контент находится в UTF-8
- Javascript по своей природе является UTF-8, поэтому вам не о чем беспокоиться
Дело в том, что разные технологии по умолчанию используют разные кодировки символов. К сожалению, к строкам не присоединены неявные метаданные кодирования, это просто последовательности байтов. Если не будет сказано, получатель строки может только догадываться, в какой кодировке должна быть эта последовательность. При соединении двух частей чего-либо вам нужно убедиться, что они используют одну и ту же кодировку (или вам нужно преобразовать из одной кодировки в другую). Всегда предполагайте, что вам нужно где-то определить кодировку, как именно это нужно сделать, зависит от технологии.