1

我们正在使用一个名为 CKEditor 的 JavaScript WYSIWYG 文本编辑器。编辑器有一个源视图,用 HTML 标记用户在文本编辑器中输入的内容。有时编辑器会在此源视图中插入不间断空格 (  ),这很好。

一切似乎都在开发机器上正常工作,所以我们部署到我们的生产服务器上。此时,我们开始看到一个奇怪的 Â 字符 ( Â) 被插入到文本中。经过一番阅读,我看到 CKEditor 错误跟踪页面上的几张票报告了这一点。我能够通过将ckeditor.js 标记charset上的属性设置为.scriptUTF-8

我的问题是:为什么script标签charset首先需要设置属性,为什么只在某些系统上?

关于这个 SO 问题的最后一条评论提到 UTF-8 中不间断空格的字节序列实际上是 Â 字符后跟不间断空格latin1(这是 ISO-8859-1 对吗?)。这肯定是一个线索,因为每次用户切换到源视图时,都会一个接一个地插入另一个字符。就好像 CKEditor 框架试图注入一个不间断的空间,但它变成了Â&nbsp, then ÂÂ&nbsp, 等等。在content-type所有系统上(从 Chrome 调试器查看)是text/html;charset=ISO-8859-1,我不确定为什么。所有 Tomcat 配置中的 Dfile.encoding 选项都设置为utf-8. 标签meta也是.<meta charset="utf-8">

4

1 回答 1

1

在 Web 浏览器中启动您的开发工具。呈现/提交表单时,停下来查看来回发送的请求和响应标头。确保你UTF-8到处都能看到。如果它丢失了,那么一侧将假定“默认编码”——不管它可能是什么。

还要确保您已在表单上设置字符集,因为它们不会自动从页面继承字符集。

编辑 此页面详细解释了如何在使用 Tomcat 时设置字符集以及 servlet 的必要代码。

于 2013-10-17T15:26:52.607 回答