Как правильно отображать все неанглийские символы на веб-сайте?
Досадно, что даже самые профессиональные сайты делают это неправильно. Размещенный текст превращается во что-то непонятное. У меня мало информации о кодировках. Я просто хочу знать о проблеме, которая делает такую основную вещь настолько сложной.
- Ограничивает ли кодировка HTTP некоторые символы?
- Нужно ли пользователям отправлять информацию о кодировке / кодировке, которую они используют?
- Предполагая, что все поступает на сервер в том виде, в каком оно есть, используется ли кодирование, сохраняя этот текст, вызывая проблему?
- Это что-то о реализации браузера?
- Нужны ли нам некоторые уловки JavaScript, чтобы это работало?
Есть ли абсолютное решение для этого? У него могут быть свои ограничения, но Stackru, кажется, заставляет его работать.
1 ответ
Решение
Я подозреваю, что нужно убедиться, что весь стек обрабатывает кодирование с осторожностью:
- Укажите шрифт веб-страницы (CSS), который поддерживает широкий спектр международных символов.
- Укажите правильные атрибуты HTML-тега lang / charset и убедитесь, что в браузере используется правильная кодировка.
- Убедитесь, что HTTP-запросы отправляются с соответствующей кодировкой, указанной в заголовках.
- Убедитесь, что содержимое HTTP-запросов правильно декодировано в вашем обработчике веб-запросов.
- Сконфигурируйте свою базу данных / хранилище данных с удобной для интернационализации кодировкой / сопоставлением (такой как UTF-9/UTF-16), а не с поддержкой только латинских символов (по умолчанию в некоторых БД).
Первые несколько обычно обрабатываются браузером и веб-фреймворком, но если вы испортите кодировку БД или будете использовать шрифт с ограниченным набором символов, вас некому будет вас спасать.