Копирование текста из Word в текстовую область

#php #forms #character-encoding #ms-word

#php #формы #кодировка символов #ms-word

Вопрос:

Хорошо известная проблема: при копировании текста из MS Word в текстовую область символы текста преобразуются в странные символы при сохранении его в базу данных.

Мне было интересно, как я должен это решить?

  1. Кодировка символов HTML-документа, содержащего форму
  2. Метод сохранения перед сохранением для очистки данных
  3. Очистка после извлечения данных (перед отображением)
  4. Конфигурация базы данных (кодировка символов для таблицы)

Я бы предпочел, чтобы 1. работал, но подойдет любое другое решение.

Ответ №1:

Решение:

  1. Кодировка символов HTML-документа, содержащего форму

Обычно это работает 1. Если это не работает, ваше приложение сломано, или браузер сломан, или буфер обмена поврежден, или MSWord сломан.

В любом случае вы не сможете исправить MSWord ни в буфере обмена, ни на стороне сервера браузера.

Вместо этого убедитесь, что кодировка, которую использует веб-сайт, может обрабатывать символы из буфера обмена, и соблюдайте запросы на кодировку в вашем приложении при обработке входных данных.

1 Пожалуйста, смотрите раздел Обработка кодировок символов в HTML и CSS, как это работает.

Комментарии:

1. Я бы проголосовал за это, если бы не тот факт, что наиболее распространенной причиной, безусловно, является плохое программирование — неспособность сопоставить кодировку в html с кодировкой, обрабатываемой PHP, и неспособность сопоставить кодировку в PHP с кодировкой, используемой базой данных.

2. @symcbean: Хорошо: «соблюдайте требования к кодированию в вашем приложении при обработке входных данных» 😉 В любом случае, я знаю, что вы имеете в виду, просто этот вопрос касался вставки из MSWord конкретно. Может быть, стоит добавить ответ, в котором вы проясняете пункты 2-4.