当前位置:  技术问答>java相关

向高手求救,JSP程序在进行数据库查询时的条件字段的中文问题!!!

    来源: 互联网  发布时间:2017-03-08

    本文导语:  我写的一个查询程序不知怎么有时会出现条件字段中文无法正常显示现象,但有时正常,调试时发现TOMCAT控制台上打印出SQL语句为: select 字段1,字段2... from table1 where  table1.字段名='?????' 用ascii2Unicode函数(见下...

我写的一个查询程序不知怎么有时会出现条件字段中文无法正常显示现象,但有时正常,调试时发现TOMCAT控制台上打印出SQL语句为:
select 字段1,字段2... from table1 where  table1.字段名='?????'
用ascii2Unicode函数(见下面程序)改成:
String Strtemp=ascii2Unicode(字段值);
select 字段1,字段2... from table1 where  table1.字段名="'"+Strtemp+"'";
还是不行,请问这怎么回事?是否有更简单的方式,比如在WEB环境文件中配置?
       public static String ascii2Unicode(String str)
        {
                String temp_p = str;
                try
                {
                        byte[] temp_t = temp_p.getBytes("ISO8859-1");
                        String temp   = new String(temp_t,"GB2312");
                        return temp;
                }
                catch(Exception e)
                {
                        return "";
                }
        }

|
解决办法:
第一:
在jsp页面加入:

或者在servlet里面
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html; charset=gb2312");
上面的如果在不行就用如下的方法在数据入库前进行调用:
public static String UnicodeToChinese(String s){
  try{
     if(s==null||s.equals("")) return "";
     String newstring=null;
     newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
     return newstring;
    }
  catch(UnsupportedEncodingException e)
  {
  return s;
  }
  }

public static String ChineseToUnicode(String s){
  try{
  if(s==null||s.equals("")) return "";
  String newstring=null;
  newstring=new String(s.getBytes("gb2312"),"ISO8859_1");
   return newstring;
  }
  catch(UnsupportedEncodingException e)
  {
  return s;
 }
  }


|
解决中文显示问题的几个方法:  
1.修改区域设置:在控制面版中选择区域设置,设为英语(美国),  然后重起。一切就都正常。
    
2.在jsp页顶部加入一条语句:    
 中文显示就正常了。    

3.在编译servlet和jsp时加入代码选项。编译servlet使用    
javac  -encoding  iso8859_1  myservlet.java    
在jsp的zone配置文件中.修改编译参数为:    
compiler=builtin-javac  -encoding  ISO8859_1    
使用这种方法后,不需要作其他的改动就可以正常显示中文了。 
   
4.最土的办法,在servlet源程序中加入代码变换语句。如    
String  name  =  request.getParameter(  "username  ");    
if(name  ==  null)  name="  ";    
name=new String(name.getBytes("ISO8859_1")); 

具体方法:在页面顶部加 
然后写入数据库时使用方法4进行编码,否则数据库中看到的是乱码!






如果你在直接打开数据时看到的是正常的中文,那么你查询字符也用正常中文字符,无须编码。如果你的数据库里已经时乱码时,你的查询字符要编码!
我建议除了在写入数据库时要编码
外,其他jsp页面统一用方法:在页面顶部加 
我也遇到这个问题很多次,不知道你的可否这样解决?

|
request.setCharacterEncoding("gb2312");

    
 
 

您可能感兴趣的文章:

  • 高手请看:如何用java存取DB2中的BLOB字段!!
  • 请问那位高手能帮我解决在jsp中将本地文件上传到数据库服务器的一个字段中的问题
  • 求救,很急!请高手指点
  • 请SCO UNIX高手求救!!!
  • 高手请进!!!在线求救!!!!**
  • 求救JAVA高手
  • 向高手求救:linux进不去,怎么恢复啊?
  • 求救,哪位高手用过iwlist
  • 求救高手
  • 火线传真----求救Linux高手?如何配置声卡
  • 各位linux高手:求救sos
  • 如何配置IBM http server?求救各位高手帮小弟一把!!
  • 求救,高手指教
  • 求救:怎样在CSH中写MAIL命令发邮件。高手帮忙
  • 求救:高手请进: 使用 qsort()涵数时 core dump 阿?
  • 求救高手:为什么不能加载模块?
  • linux 安装问题,求救高手
  • 高手求救呀
  • 求救啊 高手来帮忙
  • 求救?请高手指点!
  • Linux下脚本如何实现以下功能描述?求救高手脚本问题
  • 在red hat9.0下挂载minix1.0格式的软盘镜像,出错?????~~求救高手
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请高手相助! 在MicroWindows中如何加入中文繁体字显示??
  • samba 3.0如何显示中文的问题,高手请进
  • 请高手相助! MicroWindows中如何加入中文繁体字显示
  • linux 下,doxygen生成的html文件中文注释为乱码,请高手指教!
  • 请教高手:中文问题
  • jsp中文乱码问题(有点特殊),高手进。。。
  • 关于数据显示 中文 乱码的害我许久的疑难杂症,各位JAVA高手近来看看!!
  • JSP中文乱码,高手请帮忙!!!
  • 从数据库中取出的数据用compareTo("中文")总没法得到想要的结果,请高手解答
  • 高手请进,最新中文问题!!request.getParameterValues();(在线)
  • 高手教我怎样才能取得一个字符串的“像素长度” 包括中文和英文大小写各种情况。
  • JDK1.4下使用WindowsLookFeel居然中文全部变成方框!请高手指点
  • 含有中文的文件处理(高手请进)
  • 我在linux下可以看到win2000下ntfs格式中的英文文件夹,可是却看不到中文的,还请高手帮忙.
  • 我的shell不支持中文注释,请高手帮忙
  • 高手请进:请问用response.sendRedirect()函数传递的中文参数如何正确识别?
  • *** 高分, 关于数据库中文乱码的问题, 请高手指教, 一定给分。 ****
  • 100分,请问高手,为何jdk1.3.1以后的demo中的stylepad不能存中文文件。
  • java的中文问题!! 请高手 传经!!
  • 请教高手(100分):关于B/S中的中文输入法问题。用微软的智能ABC在jTextArea老出错
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3