javaWeb解决中文乱码的一点小总结

①enctype="multipart/form-data"  上传文件使用的表头,内容input等以二进制传递,可以一定程度上避免表单提交中文乱码(针对的是前后端编码一致的情况)。

②<constant name="struts.i18n.encoding" value="gbk" />  

Struts2的上述标签,可以设置编码格式,针对的是post请求。

相当与request.setCharacterEncoding("GBK"); 

③关于请求方式。Get请求和post请求的区别及说明。

1. Get请求为url请求方式,携带的参数会在url后边以?Name=张三&age=18这种形式存在。如果包含中文,由于浏览器无法传递中文,需要先进行编码,这时候经历了浏览器编码----》服务器中间件解码的过程。因为没有指定请求头的编码格式,服务器中间件默认是用iso-8859-1编码进行解码的,此时后端可通过 new String(aa.getbytes(iso-8859-1),’”gbk)等方式重新组合编码获取正确的编码格式。

对于单独的url加参数的请求方式(非表单提交),我们可以将中文参数进两次encodeURI,第一次编码得到的是UTF-8形式的URL,第二次编码得到的依然是UTF-8形式的URL,但是在效果上相当于首先进行了一 次UTF-8编码(此时已经全部转换为ASCII字符),再进行了一次iso-8859-1编码,因为对英文字符来说UTF-8编码和ISO- 8859-1编码的效果相同。后端在用常规接收接收的时候web中间价会自动进行一次解码,即用ISO- 8859-1进行了解码,然后我们在用URLDecoder.decode(aa,’”gbk)即可解码为正确的中文。

对于tomcat来说,我们可以在server.xml的<Connector port 中添加URIEncoding="gbk" 标签来进行设置tomcat的默认解码格式(紧针对get方式有效),weblogic也有相似的配置。 tomcat还有一个标签:useBodyEncodingForURI="true"添加的位置和上边相同,但是并不意味着这两个标签可以同时使用。useBodyEncodingForURI="true"标签告诉tomcat解码的时候用请求体指定的编码(即post请求编码)格式进行get请求的解码,此时适用post请求解决中文乱码问题。

2. 对于post请求来说,最常用的即:

request.setCharacterEncoding("gbk")

response.setCharacterEncoding("gbk")

只针对post请求方式有效

的方式进行指定post请求的编解码解决中文乱码。需要注意的问题是:此设置只对于此次请求没有进行任何request.getparmer()操作的请求才有效,response同理要在返回之前设置。因此我们常用spring的encodingFilter拦截器进行编码格式的设置,跟踪源码会发现其本质就是request.setCharacterEncoding("gbk")但是拦截器能保证一定设置在request.getparmer()之前,而且不用我们每个方法都啰嗦的写上边的东西。

编解码问题还涉及到请求头contentype以及jsp页面的pageEncoding等等,此处不再详细说明。

 

 

 

1. 内容概要 本项目是一个支持科学函数的命令行计算器,兼容 C++98 标准。它实现了中缀表达式词法分析、后缀表达式转换与求值,支持常见数学运算(如幂、三角函数、对数等)与括号优先级解析。程序还提供了角度版三角函数、角度与弧度互转功能,并支持函数调试输出与函数演示模式。 2. 适用人群 * C++ 初中级学习者,特别是希望深入理解表达式求值机制者 * 需要一个可扩展的计算引擎的项目开发者 * 想通过项目实践词法分析、调度场算法、数学函数封装的开发者 * 高校学生课程设计、编译原理实践者 3. 使用场景及目标 * 实现中缀表达式的完整求解器,支持函数嵌套、优先级与结合性处理 * 提供角度与弧度版本的三角函数,以适应不同输入偏好 * 演示中缀转后缀过程,辅助编程教育与算法教学 * 提供科学函数辅助计算,如 `log`, `sqrt`, `abs`, `exp`, `ceil`, `floor` 等 4. 其他说明 * 支持函数:sin, cos, tan(弧度);sind, cosd, tand(角度) * 支持函数嵌套,如 `sin(deg2rad(30))` * 支持操作符:+, -, \*, /, ^, \*\*(幂运算)与括号优先级 * 所有函数均通过 map 注册,方便扩展与自定义 * 输入 `help` 查看支持函数,`demo` 观看转后缀过程,`quit` 退出程序 * 提示用户避免使用 `°` 符号,推荐使用角度函数代替 * 可通过 `g++ calculator.cpp -o calculator -lm` 编译(需链接数学库)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值