2013-10-12 55 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编码文本和剪贴板试图兑现。

相关问题