java - Html 特殊字符和 Javascript

标签 java javascript html encoding special-characters

我在客户端使用 javascript 和 ajax 框架,在服务器端使用 Java glassfish。

我正在尝试发送包含以下文本的邮件:

"àèìòù !"£$%&/()=?^"

但是当我读到我的发布请求(到java服务器端)时,我得到了这个结果:

"à èìòù !"£$%&/()=?^"

我需要将所有html特殊字符转换为各自的html代码,例如:

& -> &
à -> à 

我该怎么办?有一些 javascript 库可以执行此操作吗?

最佳答案

欢迎做出有史以来最愚蠢的决定之一。 Servlet 规范定义默认编码应为 ISO-8859-1(而不是 UTF-8)。

因此,为了让您的 java 应用程序在 POST 后正确读取这些字符,您需要设置一个 Servlet Filter 来强制字符集为 UTF-8。发生这种情况是因为大多数(如果不是全部)浏览器使用 UTF-8 作为默认字符集并且没有设置 Accept-Charset header 。

这是很常见的事情,tomcat 捆绑了这些过滤器之一( How do I change how POST parameters are interpreted? )。如果您计划部署到不同的 servlet 容器,我建议您编写自己的过滤器(只需从 tomcat 复制粘贴过滤器即可)。

关于java - Html 特殊字符和 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12660427/

相关文章:

java - 如何在不双击JNLP的情况下让java web start自动启动

javascript - Angular 4 - 条件 CSS 类

javascript - 输入 0 未定义堆栈 :reference error

html - 固定导航栏,白色间隙,为什么?

javascript - 在 HTML DOM 树中查找元素 A 是否在元素 B 之后

Java神秘长溢出

java - 从文件中读取文本行

java - 如何使用 Java 8 流通过列表过滤 Map?

JavaScript 问题?谷歌地图。信息窗口

html - 为什么漂浮在作为 body 标签的直接子项的包装器中接受 100% 高度