我在客户端使用 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/