Кодировка символов Веб-сайта изменения от iso-8859-1 до UTF-8

От Java SE 8 Вы могли использовать:

LocalDate.MAX
6
задан Nic Hubbard 20 October 2009 в 22:11
поделиться

2 ответа

Основная трудность состоит в том, чтобы убедиться, что вы проверили, что все пути к данным соответствуют UTF-8:

  1. Поддерживается ли ваш сайт DB? Если это так, вам необходимо преобразовать все таблицы в UTF-8 или какую-либо другую кодировку Unicode, чтобы сортировка и поиск текста работали правильно.

  2. Использует ли ваш сайт какой-либо язык программирования для динамического содержимого? (PHP, mod_perl, ASP ...?) Если это так, вам нужно убедиться, что конкретный языковой интерпретатор, который вы используете, полностью понимает некоторую форму Unicode, выполнить преобразования, если он не использует UTF-8 изначально. - UTF-16 является следующим по распространенности - и убедитесь, что он настроен на использование UTF-8 при выводе на веб-сервер.

  3. Есть ли у вашего сайта какой-либо сервер приложений? Использует ли он UTF-8 для вывода текста?

  4. Существует как минимум три разных места, где вы можете объявить кодировку для веб-документа. Убедитесь, что вы изменили их все:

    • заголовок HTTP Content-Type
    • тег в ваших документах '
    • тег в верхней части документа при использовании XHTML Strict

Все это исходит из моего опыта много лет назад, когда я проследил некоторые данные Unicode через умеренно сложное N-уровневое приложение и обнаружило такие цепочки конверсии, как:

Latin-1 → UTF-8 → Latin-1 → UTF-8

Таким образом, даже несмотря на то, что данные оказались в браузере, утверждая, что они являются "UTF-8", приложение все еще могло обрабатывать только подмножество, общее с Latin-1 .

Самая большая причина таких странных цепочек преобразования заключалась в незрелой поддержке Unicode в инструментах того времени, но вы все равно можете столкнуться с подобными уродствами, если не будете осторожны, чтобы очистить конвейер UTF-8.

Что касается ваших комментариев о поиске символов Latin-1 и преобразовании файлов по одному, я бы этого не делал. Я бы создал сценарий на основе утилиты iconv , которая есть в каждой современной системе Linux, которая будет вводить каждый текстовый файл в вашей системе, явно преобразовывая его из Latin-1 в UTF-8. Не оставляйте камня на камне.

Что касается ваших комментариев о поиске символов Latin-1 и преобразовании файлов по одному, я бы этого не делал. Я бы создал сценарий на основе утилиты iconv , которая есть в каждой современной системе Linux, загружая каждый текстовый файл в вашей системе, явно конвертируя его из Latin-1 в UTF-8. Не оставляйте камня на камне.

Что касается ваших комментариев о поиске символов Latin-1 и преобразовании файлов по одному, я бы этого не делал. Я бы создал сценарий на основе утилиты iconv , которая есть в каждой современной системе Linux, которая будет вводить каждый текстовый файл в вашей системе, явно преобразовывая его из Latin-1 в UTF-8. Не оставляйте камня на камне.

7
ответ дан 10 December 2019 в 02:49
поделиться

Такое изменение касается (почти) каждой части вашей системы. Вам нужно пройти через все, от базы данных до PHP и HTML до веб-браузера.

Запустите тестовый сайт и подвергните его серьезному тестированию (различные браузеры на разных платформах делают разные вещи).

IMO Важно действительно познакомиться с UTF-8 и его значением для программного обеспечения. Несколько быстрых замечаний:

  • PHP в основном ориентирован на байты. Узнайте разницу между символами, кодовыми точками и байтами, а также между UTF-8 и Unicode.
  • UTF-8 хорошо разработан. Например, при наличии двух строк UTF-8 побайтно-ориентированная strstr () по-прежнему будет работать правильно.
  • Наиболее распространенной проблемой является обработка строки UTF-8 как ISO-8859-1 и наоборот - вам может потребоваться добавить документацию к вашим функциям, указав, какой тип кодировки они ожидают, чтобы снизить вероятность ошибок такого рода. Также может помочь соглашение об именах переменных для ваших строк (чтобы указать, какую кодировку они используют).
2
ответ дан 10 December 2019 в 02:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: