首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本在从word文档复制到网页时发生的更改

文本在从word文档复制到网页时发生的更改
EN

Stack Overflow用户
提问于 2013-10-12 09:54:57
回答 2查看 3K关注 0票数 0

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

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

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

问题:如何更改输入文本的编码?或者如何避免XML编码?或者更改我的网页编码是否有助于解决这个问题?

需要注意的一点是:我想使它自动化。我在谷歌上读到过,你应该先把文本复制到一些简单的文本编辑器中,该编辑器对编码进行格式化,并将其复制到网页上。但这个方案对我来说是不可行的。

而且我以前也用过weebly,那次我从一个word文件中复制文本,如果有人知道weebly是如何管理编码冲突的!

答案预期在java :)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-12 09:58:30

这是因为word documment‘(逗号)没有包含在UTF -8标准中,所以您需要以编程的方式处理它。

下面是javascript的一些例子

代码语言: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
EN

Stack Overflow用户

发布于 2015-10-19 09:37:09

我不确定这是否对任何人有帮助,但我花了几天时间试图解决这个问题。我的用例非常类似,只是我发现了与剪贴板复制方式有关的问题(根据操作系统的不同,这略有改变),然后粘贴文本。(我用ClipSpy来调查“引擎盖下”发生了什么。)

原谅我的外行的解释:剪贴板以多种格式存储文本,当发出粘贴命令时,它会尝试匹配收件人程序的字符集/编码,或者在我的例子中是网页的<textarea>框。这些网站和论坛帖子对以下方面大有帮助:

最终,我所要做的就是在<head> <meta charset="UTF-8"> </head>的早期声明,让浏览器为我做“艰苦”的工作,期望UTF-8编码文本和剪贴板试图实现这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19332879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档