从word文档复制到网页时文本会发生变化

时间:2013-10-12 09:54:58

标签: java google-app-engine encoding utf-8 ms-word

我正在创建一个博客引擎,它包含一个<textarea>,它接收整篇文章的输入。

然后我使用ajax并将其存储到GAE数据存储提供的Text变量

问题: 如果用户从word文档中复制文本,那么当我们在网页上嵌入时,我会在屏幕上看到各种随机字符。 我知道这是因为word文件使用XML编码,HTML页面使用utf-8编码(在我的情况下)

问题: 如何更改输入文本的编码? 或者我如何避免XML编码? 或者,如果更改我的网页编码可能有助于解决此问题?

需要注意的要点: 我想让它自动化..我在谷歌上看到你应该首先将文本复制到一些简单的文本编辑器,它编码格式并将它们复制到网页。 但这个选项对我来说是不可行的。

此外我之前曾经使用过,当时我从word文件复制文本,如果有人知道如何管理编码冲突!

java中应该有答案:)

2 个答案:

答案 0 :(得分: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函数onKeyup事件

答案 1 :(得分:0)

不确定这是否会对任何人有所帮助,但我花了几天时间试图找出这个问题。我的用例非常相似,除了我发现我的问题与剪贴板复制的方式有关(这根据操作系统略有改变)并随后粘贴了文本。 (我使用ClipSpy来调查“引擎盖下”发生的事情。)

原谅我的外行解释:剪贴板以多种格式存储文本,当给出粘贴命令时,它会尝试匹配收件人程序的字符集/编码,或者在我的情况下{{1}我的网页框。这些网站和论坛帖子帮助极大:

最终我所要做的就是尽早在<textarea>声明让浏览器为我做“艰苦”的工作,期待UTF-8编码的文本,剪贴板试图尊重它。