我正在创建一个博客引擎,它包括一个<textarea>,它接受整篇文章的输入。
然后使用ajax并将其存储到GAE数据存储提供的Text变量中。
问题是:如果用户从word文档中复制文本,当嵌入到网页上时,我会在屏幕上看到各种随机字符。我知道这是因为word文件使用XML编码,而HTML页面使用utf-8编码(在我的例子中)。
问题:如何更改输入文本的编码?或者如何避免XML编码?或者更改我的网页编码是否有助于解决这个问题?
需要注意的一点是:我想使它自动化。我在谷歌上读到过,你应该先把文本复制到一些简单的文本编辑器中,该编辑器对编码进行格式化,并将其复制到网页上。但这个方案对我来说是不可行的。
而且我以前也用过weebly,那次我从一个word文件中复制文本,如果有人知道weebly是如何管理编码冲突的!
答案预期在java :)
发布于 2013-10-12 09:58:30
这是因为word 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事件
发布于 2015-10-19 09:37:09
我不确定这是否对任何人有帮助,但我花了几天时间试图解决这个问题。我的用例非常类似,只是我发现了与剪贴板复制方式有关的问题(根据操作系统的不同,这略有改变),然后粘贴文本。(我用ClipSpy来调查“引擎盖下”发生了什么。)
原谅我的外行的解释:剪贴板以多种格式存储文本,当发出粘贴命令时,它会尝试匹配收件人程序的字符集/编码,或者在我的例子中是网页的<textarea>框。这些网站和论坛帖子对以下方面大有帮助:
最终,我所要做的就是在<head> <meta charset="UTF-8"> </head>的早期声明,让浏览器为我做“艰苦”的工作,期望UTF-8编码文本和剪贴板试图实现这一点。
https://stackoverflow.com/questions/19332879
复制相似问题