栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么POST不支持字符集,而支持AJAX请求呢?雄猫6

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么POST不支持字符集,而支持AJAX请求呢?雄猫6

表单发布(在iso中输出chars)

<form id="leadform" enctype="application/x-www-form-urlenpred;

charset=utf-8” method=”post” accept-charset=”utf-8” action=”{//app/path}”>

您无需在此处指定字符集。浏览器将使用HTTP响应标头中指定的字符集。

只是

<form id="leadform" method="post" action="{//app/path}">

足够。


xml声明:

<?xml version="1.0" encoding="utf-8"?>

不相关。它仅与XML解析器有关。Webbrowsers不会解析

text/html
为XML。这仅与服务器端有关(如果您使用的是基于XML的视图技术(如Facelets或JSPX,在纯JSP上则是多余的))。


Doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

不相关。它仅与HTML解析器有关。此外,它不指定任何字符集。相反,将使用HTTP响应标头中的那个。如果您没有使用Facelets或JSPX之类的基于XML的视图技术,那么效果可能会很好

<!DOCTYPEhtml>


元标记:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

不相关。仅当从本地磁盘查看HTML页面或在本地解析HTML页面时,才有意义。相反,将使用HTTP响应标头中的那个。


jvm参数:

-Dfile.encoding=UTF-8

不相关。解析源文件只与Sun / Oracle(!)JVM有关。


我也尝试过使用,

request.setCharacterEncoding("UTF-8");
但似乎tomcat只是忽略了它。我没有使用RequestDumper阀。

仅在尚未解析请求正文时(即,您尚未调用

getParameter()
等),这才起作用。您需要尽早致电此电话。一个
Filter
是一个完美的地方。否则它将被忽略。


根据我的阅读,POST数据编码主要取决于表单所在的页面编码。据我所知,我的页面已正确编码为utf-8。

它取决于HTTP响应标头。

您需要做的是以下三件事:

  1. 将以下内容添加到您的JSP顶部:
    <%@page pageEncoding="UTF-8" %>

这会将响应编码设置为UTF-8,并将响应标头设置为UTF-8。

  1. 创建一个
    Filter
    doFilter()
    方法中执行以下操作的:
    if (request.getCharacterEncoding() == null) {request.setCharacterEncoding("UTF-8");

    }
    chain.doFilter(request, response);

这将使POST请求主体将作为UTF-8处理。

  1. 如下更改
    <Connector>
    条目
    Tomcat/conf/server.xml
    <Connector (...) URIEncoding="UTF-8" />

这将使GET查询字符串将作为UTF-8处理。

也可以看看:

  • Unipre-如何正确获取字符?-包含实用的背景信息和针对Java EE Web开发人员的详细解决方案。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406398.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号