2013-10-12 2 views
0

Я создаю движок блога и включает в себя <textarea>, который берет на себя ввод всей статьи.Текст изменяется при копировании из документа Word на веб-страницу

Затем я использую Ajax и сохранить его в Text переменной, представленной GAE датасторе

Проблема: Если а пользователь копирует текст из документа слова, их я вижу различные случайные символы на экране при встраивании на веб-странице. Я знаю, что это происходит потому, что файл слово использует кодировку XML и HTML-страница использует UTF-8 кодировку (в моем случае)

Вопрос: Как изменить кодировку текста введенного? Или как я могу избежать кодирования XML? Или если изменение кодировки моей веб-страницы может помочь решить эту проблему?

Точки для отображения: Я хочу сделать это автоматически. Я прочитал в Google, что вам нужно вначале скопировать текст в простой текстовый редактор, который форматирует кодировку и копирует ее на веб-страницу. Но этот вариант для меня невозможен.

Также я использовал weebly раньше, и в это время я скопировал текст из файла слова, если кто-то знает, как weebly управляет конфликтом кодирования!

Ответов ожидаются в Java :)

ответ

1

это потому, что слово documment '(запятая) не рассматривается в UTF - 8 стандартов, так что вы должны справиться с этим в программном пути.

Ниже приведены примеры, на Javascript

<textarea rows="4" onkeyup="replaceWordChars(this.value)" cols="50"> 
//your text area 
</textarea> 


function replaceWordChars(text) { 
    var s = text; 
    // smart single quotes and apostrophe 
    s = s.replace(/[\u2018|\u2019|\u201A]/g, "\'"); 
    // smart double quotes 
    s = s.replace(/[\u201C|\u201D|\u201E]/g, "\""); 
    // ellipsis 
    s = s.replace(/\u2026/g, "..."); 
    // dashes 
    s = s.replace(/[\u2013|\u2014]/g, "-"); 
    // circumflex 
    s = s.replace(/\u02C6/g, "^"); 
    // open angle bracket 
    s = s.replace(/\u2039/g, "<"); 
    // close angle bracket 
    s = s.replace(/\u203A/g, ">"); 
    // spaces 
    s = s.replace(/[\u02DC|\u00A0]/g, " "); 
    document.getElementById("your Textarea ID ").value = s; 
} 

на текстовой области вы должны огнестойкость JavaScript Function OnKeyUp событие

+0

Выполняет ли ваш код выше все конфликты? Или это просто пример? Если пример, где я могу получить полный список? – leo

+0

, скорее всего, он будет обрабатывать все, что отличается по стандартам.попробуйте и дайте мне знать ваш результат –

+0

вам просто нужно называть эту функцию остальными вещами, эта функция будет делать –

0

Не уверен, если это поможет кто-нибудь, но я провел несколько дней, пытаясь понять из этой проблемы. Мой вариант использования был очень похож, за исключением того, что я обнаружил, что моя проблема связана с тем, как скопирован буфер обмена (это немного изменилось в зависимости от ОС) и впоследствии вставило текст. (Я использовал ClipSpy, чтобы выяснить, что происходит «под капотом».)

Простите объяснение моего непрофессионала: в буфер обмена хранит текст в нескольких форматах и ​​когда команда клейстер дается она пытается соответствовать кодировки/кодирования программа получателя или в моем случае <textarea> поле моей веб-страницы. Эти сайты и сообщения на форуме помогли очень:

В конечном итоге все, что я должен был сделать объявить рано <head> <meta charset="UTF-8"> </head> позволить браузеру делать «жесткий» работа для меня, по ожидая UTF-8 закодированный текст, и буфер обмена пытается выполнить это.