我正在创建一个博客引擎,它包含一个<textarea>
,它接收整篇文章的输入。
然后我使用ajax并将其存储到GAE数据存储提供的Text
变量
问题: 如果用户从word文档中复制文本,那么当我们在网页上嵌入时,我会在屏幕上看到各种随机字符。 我知道这是因为word文件使用XML编码,HTML页面使用utf-8编码(在我的情况下)
问题: 如何更改输入文本的编码? 或者我如何避免XML编码? 或者,如果更改我的网页编码可能有助于解决此问题?
需要注意的要点: 我想让它自动化..我在谷歌上看到你应该首先将文本复制到一些简单的文本编辑器,它编码格式并将它们复制到网页。 但这个选项对我来说是不可行的。
此外我之前曾经使用过,当时我从word文件复制文本,如果有人知道如何管理编码冲突!
java中应该有答案:)
答案 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编码的文本,剪贴板试图尊重它。