2013-10-12 54 views
0

我正在創建一個博客引擎,它包含一個輸入整篇文章的<textarea>將文檔從Word文檔複製到網頁時發生更改

然後我用Ajax和它存儲在GAE數據存儲

的問題提供了Text變量:嵌入時 如果用戶複製從Word文檔中的文本,其中我看到屏幕上的各種隨機字符在網頁上。 我知道這是因爲這個詞文件使用XML編碼和HTML頁面使用UTF-8編碼(對我來說)

問題: 如何改變輸入的文本的編碼? 或者我該如何避免XML編碼? 或者如果改變我的網頁編碼可能有助於解決這個問題?

需要注意的事項: 我想使它自動化..我在Google上讀到,您應該首先將文本複製到一些簡單的文本編輯器,它將格式化編碼並將它們複製到網頁中。 但是這個選項對我來說是不可行的。

此外,我之前曾用過weebly,那時候我從一個word文件複製文本,如果有人知道如何管理編碼衝突的話會有多麼可怕!

答案有望在Java :)

回答

1

那是因爲取首字「(逗號)不包括在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函數onkeyup事件的一些例子

+0

您的上述代碼是否處理所有衝突?還是僅僅是一個例子?如果是,那麼我可以在哪裏獲得完整列表? – leo

+0

很可能它會處理所有標準中不同的東西。給一個嘗試,讓我知道你的輸出 –

+0

你只需要調用這個函數其餘的東西這個函數將做 –

0

不知道這是否會幫助任何人,但我花了幾天試圖找出解決這個問題。我的用例非常相似,除了我發現我的問題與複製剪貼板的方式有關(這取決於操作系統稍有變化),然後粘貼文本。 (我用ClipSpy調查發生了什麼事情「引擎蓋下」。)

請原諒我的外行的解釋:剪貼板存儲文本以多種格式,並給出粘貼命令時,它試圖匹配的字符集/編碼收件人程序,或者在我的網頁<textarea>框中。這些網站和論壇帖子極大的幫助:

最終所有我需要做的就是申報早期<head> <meta charset="UTF-8"> </head>讓瀏覽器做「硬」的工作對我來說,被期待UTF-8編碼文本和剪貼板試圖兌現。

相關問題