为啥request.setCharacterEncoding解决中文乱码只限于表单是post的情况,对get不管用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥request.setCharacterEncoding解决中文乱码只限于表单是post的情况,对get不管用?相关的知识,希望对你有一定的参考价值。
是因为get方式url会经过一些规则经行编码的!定义:
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符, 将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况, 在服务器端的表单输入格式样子象这样: theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
编码规则:
URL编码遵循下列规则: 每对name/value由&符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =, &, 和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。
-----------------------------------------------------------------------------------------------------------------------
以上出自:http://baike.baidu.com/view/204662.htm
楼主可以去看看。 参考技术A 也许是你传递的信息量超过了get的承载量,转码过后数据量会改变。你试试传递较少的信息本回答被提问者采纳
为啥使用 glTranslatef?为啥不直接更改渲染坐标?
【中文标题】为啥使用 glTranslatef?为啥不直接更改渲染坐标?【英文标题】:Why use glTranslatef? Why not just change the rendering co-ords?为什么使用 glTranslatef?为什么不直接更改渲染坐标? 【发布时间】:2013-08-30 17:58:21 【问题描述】:我正在使用 OpenGL 和 SDL 用 C++ 制作一个简单的吃豆人游戏。我打算使用glTranslatef
函数,但只是更改绘图函数使用的坐标似乎更简单。我想知道,你为什么/应该使用glTranslatef
?
这是glTranslatef
和简单更改坐标的简单示例
glPushMatrix()
glTranslatef(10,0,0)
draw()
glPopMatrix()
或
//Assuming the draw function took co-ords
draw(x+10 ,y ,z)
我唯一的猜测是它们实际上是相同的,这只是偏好。能给我解惑吗?
编辑
请注意,我只是在谈论翻译功能。关于缩放和旋转的一切都是无关紧要的,我只是在谈论翻译。 (这是因为没有glTranslatef
函数的翻译很容易,而其他两个没有它们的函数会更复杂)
【问题讨论】:
您是否知道调用 glTranslate、glRotate 和 glScale 会改变 maxtrix 堆栈,而只是向某个坐标添加偏移量不会? 是的,但我没有想到这一点。所以您指出,通过更改当前矩阵,您可以移动/旋转/缩放该矩阵中绘制的所有内容,对吗? 您绘制的所有内容都乘以madelview 矩阵,因此在移动/旋转/缩放调用之后,绘制的所有内容都会受到这些转换的影响。你可以看看这个:glprogramming.com/red/chapter03.html#name2 没错,这将简化移动/旋转/缩放大量对象。感谢您指出这一点。 【参考方案1】:在旧版 OpenGL 矩阵操作命令(例如 glTranslate)中,更改当前位于所选矩阵堆栈顶部的矩阵。
例如,当您选择 MODELVIEW 作为当前堆栈并调用 glTranslate 时,当前模型视图矩阵将替换为 M_current * M_translation。
您的代码有效地对提交给 GL 的顶点执行了额外的平移,但与向 x 坐标添加恒定偏移相比,可能会有额外的变换,如旋转、缩放,甚至可能已经编码了一个或多个平移您当前的 MODELVIEW 矩阵。
所以不,除非您当前的 MODELVIEW 矩阵不是恒等式,否则两者通常不等价。
但是,如果您的唯一目的是平移您的顶点并且不再更改位置,您可以添加一个恒定的偏移量。
如果您只需要翻译,您可以在着色器中毫无问题地完成。这样,您可以通过制服动态更改偏移量。如果您添加一个恒定的偏移量并将您的数据上传到 VBO 并且之后需要再次更改它,您将需要更新缓冲区,这只是对带宽和内存事务的不必要浪费。
【讨论】:
以上是关于为啥request.setCharacterEncoding解决中文乱码只限于表单是post的情况,对get不管用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 glTranslatef?为啥不直接更改渲染坐标?
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?