在调用request.getParameter()之前调用request.setEncoding(String encode)函数名好像错了,具体记不清了,他的功能是设置编码,你到文档中查一下,将它设置成gb2312就万事大吉了
解决方案 »
- java如何去掉后缀名???
- 验证码无法通过程序刷新
- 菜鸟再遇问题,寻各位大哥帮助,java web编程,用户留言,一般内容会很长,这个内容存放在哪里了?
- 我想用jbuilder2005开发jsp网页。还没有开始呢,怎么回出现这个问题?
- 弱问一个javabean的问题,
- 大家连接数据库都用的是什么呀?sqlmapping?ofbiz?
- 请问:("jdbc:oracle:thin:@202.202.1.1:1524:XXX","sa","sa");中thin是什么意思?
- 数据库查询后的结果在页面的error!java.io.IOException: "Error: Attempt to clear a buffer that's already been flushed"
- 同一页面多语言提交(高分请教)
- war包解析提示找不到类,求助
- ■■讨论:jndi的lookup实现机制是怎么样的?■■
- 企业内部网的安全问题以及与其对应的解决方案有哪些?我是学电子商务的,我所了解的相关信息如下:
如果是为了在jsp中显示数据库中的内容,只需要使jsp的charset=UTF-8就ok了。
如果是对于静态的html中如果有文字,显示出来的就是乱码啊。因为这些我们直接写的文字进行unicode编码后就是乱码了,解决办法是:
1 在jsp文件中直接写unicode的中文,比如“宠物”显示在jsp编辑工具中就是这样的“瀹犵墿”
2使用类似struts中message的办法来显示静态的文字。另外我发现了一个使我感到奇怪的问题,使用了struts的message以后,jsp的charset无论是使用gb2312还是UTF-8都可以显示正常的中文,这是怎么回事呢?后来才明白原来struts的字典文件中存的是代表unicode的16进制的ANSI代码,比如“hello,世界”在字典文件中是“hello,\u4e16\u754c”,而无论用何种方式编码,ANSI码的是大家一样的。
写
1如果jsp中有个text框,我要将text框中的内容写到数据中去,那么要求
1.1 jsp的charset是UTF-8
1.2 requset的内容用UTF-8编码,也就是将filter的编码设为UTF-8就可以了。
那么,这里我可不可不要第二步,不可以,但理解还不深刻;
那么,可不可以在第一步中用gb2312,不可以,因为如果用gb2312,request中的内容在setCharacterEncoding之前就已经不对了,编目方式设对了也没用了。
2我是直接将一个字符串”宠物”写到数据库中去,那么该如何处理呢。
如果是在servlet中,可以直接new String ("宠物");然后用一个sql语句写到数据库中去。
如果是在jsp中,又如果jsp的charset是UTF-8的话,那么要new String("瀹犵墿");
又如果jsp的charset是gb2312的话,那么也是new String ("宠物");就可以了
一般来说2这种情况是很少的
这又是怎么回事呢?这是因为jsp是要解释为servlet的,而且解释的时候是使用的unicode编码,如果charset是UTF-8,又是new String ("宠物");那么servlet中就变成了:
response.setContentType("text/html; charset=UTF-8");
…
new String ("锟斤拷锟斤拷");//这就不对了
response.setContentType("text/html; charset=gb2312")
…
new String ("瀹犵墿");//这回对了
总结,如果使用unicode
1 jsp页面中charset用UTF-8
2 过滤器用UTF-8
3 页面中的静态文字内容用message配合字典来显示
4 数据库的读写不需要特别的处理
总之,现在对java中的unicode问题总算是基本搞懂了,这是一件大好事,因为最近我们的项目用unicode作数据库的编码方式,顺势学习,真是爽啊