Как вы справляетесь со специальными символами, которые добавляет MS Word?

Мне интересно, как вы очищаете специальные символы, которые используются в MS Word, такие как m- и n-тире и фигурные кавычки?

Я часто копирую контент из клиентов из Word и вставляю его в статическую HTML-страницу, но контент заканчивается странными символами, потому что специальные символы не преобразуются в свои правильные коды ACSII и поэтому отображаются как искаженный текст. (Для этих базовых веб-сайтов я использую Dreamweaver.)

Я видел много подобных проблем, когда клиенты копировали контент из Word в только текстовые поля (в основном текстовые). Когда я помещаю это в PDF-файл (через PHP) или он появляется на странице, он тоже имеет искаженный текст.

Как ты с этим справляешься? Вы пользуетесь услугами или программой по уборке?


person Darryl Hein    schedule 06.05.2009    source источник


Ответы (6)


Что касается клиентов, размещающих копию / вставленный текст из Word в текстовых областях:

Самый надежный способ гарантировать, что клиент отправляет вам текст в какой-либо конкретной кодировке (таким образом, мы надеемся выполнить любое преобразование из CP-1252 [или того, что Word использует] для вас), - это добавить атрибут accept-charset="..." ко всем вашим <form>s. Например.:

<form ... accept-charset="UTF-8">
   ...
</form>

Большинство браузеров подчиняются этому правилу и проверяют, преобразованы ли все "специфические для Word" символы в соответствующий набор символов, прежде чем они попадут на ваш веб-сайт.

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

person chazomaticus    schedule 08.05.2009

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

 preg_replace('/[^\x00-\x7F]+/', '', $str);
person Rutunj sheladiya    schedule 28.11.2014
comment
это мне очень помогло. Мне нужно было удалить этот специальный символ, потому что при отправке данных в другое приложение, стороннее приложение, это не было сделано. - person kkatusic; 08.01.2015

Обратите внимание на то, чтобы везде указывать кодировку и использовать UTF-8, тогда эти "специальные" символы должны сохраниться нормально. Но после того, как они прошли кодировку, которая не может их представить, информация о том, какой символ был изначально, теряется, поэтому он не может быть восстановлен (за исключением некоторых конкретных, но, вероятно, очень распространенных случаев, таких как переключение между Cp1252 и ISO- 8859-1).

person Michael Borgwardt    schedule 06.05.2009
comment
Особенно для HTML-страниц все в кодировке UTF8, так что проблема не в этом. - person Darryl Hein; 07.05.2009
comment
Если символы искажаются, НЕ все в UTF-8. Распространенными виновниками являются отсутствие атрибута accept-charset форм и некоторые веб-браузеры, которые неправильно его интерпретируют. - person Michael Borgwardt; 07.05.2009
comment
Что ж, если какой-либо браузер не интерпретирует это правильно, я бы сказал, что это не работает. Вот мой тип документа и т. Д .: ‹! DOCTYPE html PUBLIC - // W3C // DTD XHTML 1.0 Transitional // EN w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd› ‹html xmlns = w3.org/1999/xhtml› ‹head› ‹meta http-Equiv = Content-Type content = text / html; charset = UTF-8 / ›Что-то не так? - person Darryl Hein; 07.05.2009
comment
Сам XHTML проблематичен, см. dev-archive.net/articles/xhtml.html Хотя про проблемы с кодировками специально не слышал. Как я уже писал: определены ли для форм кодировка accept, и вы используете недавний браузер? Какой язык / среда используется для обработки данных формы? Правильно ли он использует UTF-8? - person Michael Borgwardt; 07.05.2009
comment
А, я вижу, вы используете PHP. Что ж, скорее всего, это твоя проблема. Читайте здесь: phpwact.org/php/i18n/charsets И особенно обратите внимание на раздел о противоречащие кодировкам в заголовках HTML и на самой странице. - person Michael Borgwardt; 07.05.2009
comment
Кодировка где-то запуталась, но вам нужно будет отслеживать ее на каждом этапе, чтобы найти проблему. Однако обратите внимание, что обычная проблема возникает при копировании в текстовые поля и текстовые области, поскольку браузеры обычно не отправляют кодировку с отправкой POST, а HTTP по умолчанию - ISO-8859-1, а не UTF-8. Возможно, вам потребуется указать веб-серверу, что он должен ожидать UTF-8 в отправленных данных. - person Alohci; 07.05.2009
comment
Да, но проблема также возникает на статических HTML-страницах, которые не используют PHP. Страница на компьютере и на сервере имеет искаженный текст. - person Darryl Hein; 07.05.2009
comment
В этом случае вам нужно только убедиться, что вы действительно используете UTF-8 для сохранения страницы, что UTF-8 объявлен как кодировка либо в заголовке HTML, либо в объявлении XML, либо в теге META, а в последних случаях сервер не отправляет противоречащий заголовок HTML. - person Michael Borgwardt; 07.05.2009

Вы можете попробовать Деморонизатор.

person Adrien    schedule 06.05.2009
comment
Черт возьми, это хорошо. Если никто не придумает ничего лучше, это может сработать. - person Darryl Hein; 07.05.2009

Убедитесь, что Word настроен на использование UTF-8 для HTML «Сохранить как ...».

Это в Параметры> Параметры Word> Дополнительно> Параметры Интернета> Кодировка.

person JasonPlutext    schedule 23.07.2016
comment
Не совсем то, о чем я спрашивал, поскольку они не сохраняются в формате HTML из Word (о нет!), Но хорошо знать, что эта опция существует. - person Darryl Hein; 24.07.2016
comment
Этот ответ избавил меня от многих проблем. Было нелегко найти этот вариант даже по вашим инструкциям! - person Sean F; 11.10.2016
comment
В моей версии Word это можно найти по адресу: меню файла- ›параметры-› расширенный- ›общий раздел-› кнопка веб-параметров- ›вкладка кодирования-› сохраните этот документ как: - person Sean F; 11.10.2016

Если это просто текстовый файл Word (например, без графики, таблиц и т. Д.), Вы можете попробовать «Сохранить как HTML» из Word, скопировать / вставить полученный HTML-код в свой документ в Dreamweaver, а затем использовать Dreamweaver «Очистить Word». HTML »(в меню« Команда »).

В качестве альтернативы вы можете попробовать исправить мой HTML, хотя я лично не пробовал это с текстом Word, поэтому результаты могут отличаться.

person Scott    schedule 07.05.2009
comment
Я пытаюсь найти что-то, что не требует пяти шагов, чтобы войти в Dreamweaver, и было бы неплохо иметь что-то, что я мог бы дать клиентам для очистки их содержимого Word. - person Darryl Hein; 09.05.2009