当前位置: 技术问答>java相关
汉字问题,高手请进
来源: 互联网 发布时间:2015-06-04
本文导语: 我看现在大部分人在转换汉字的时候都是在jsp中做的 就是,用getStr(request.getParameter("name")) 这样是可行,但是比较烦。 但是我现在要在javabean中转换用的是同一函数 当然在jsp传入javabean之前没有转换过 就是不行,有哪...
我看现在大部分人在转换汉字的时候都是在jsp中做的
就是,用getStr(request.getParameter("name"))
这样是可行,但是比较烦。
但是我现在要在javabean中转换用的是同一函数
当然在jsp传入javabean之前没有转换过
就是不行,有哪位高手知道
就是,用getStr(request.getParameter("name"))
这样是可行,但是比较烦。
但是我现在要在javabean中转换用的是同一函数
当然在jsp传入javabean之前没有转换过
就是不行,有哪位高手知道
|
加入:
必要时再进行如下操作:
String id=request.getParameter("txtStu_id").trim(); //学号
byte[] tmpbyte=id.getBytes("ISO8859_1");
id=new String(tmpbyte);
必要时再进行如下操作:
String id=request.getParameter("txtStu_id").trim(); //学号
byte[] tmpbyte=id.getBytes("ISO8859_1");
id=new String(tmpbyte);
|
//中文编码的转换
public String toGb(String uniStr){
String gbStr = "";
if(uniStr == null){
uniStr = "";
}
try{
byte[] tempByte = uniStr.getBytes("ISO8859_1");
gbStr = new String(tempByte,"GB2312");
}catch(UnsupportedEncodingException uef){
}
return gbStr;
}
public String toUni(String gbStr){
String uniStr = "";
if(gbStr == null){
gbStr = "";
}
try{
byte[] tempByte = gbStr.getBytes("GB2312");
uniStr = new String(tempByte,"ISO8859_1");
}catch(UnsupportedEncodingException uef){
}
return uniStr;
}
public String toGb(String uniStr){
String gbStr = "";
if(uniStr == null){
uniStr = "";
}
try{
byte[] tempByte = uniStr.getBytes("ISO8859_1");
gbStr = new String(tempByte,"GB2312");
}catch(UnsupportedEncodingException uef){
}
return gbStr;
}
public String toUni(String gbStr){
String uniStr = "";
if(gbStr == null){
gbStr = "";
}
try{
byte[] tempByte = gbStr.getBytes("GB2312");
uniStr = new String(tempByte,"ISO8859_1");
}catch(UnsupportedEncodingException uef){
}
return uniStr;
}
|
public static String coverToGb(String str){
String s="";
try{
s=new String(str.getBytes("8859_1"),"gb2312");
}catch(Exception ex){
ex.printStackTrace(System.err);
}
return s;
}
String s="";
try{
s=new String(str.getBytes("8859_1"),"gb2312");
}catch(Exception ex){
ex.printStackTrace(System.err);
}
return s;
}
|
中文问题已经快说烂了。
其实我认为我们编码尽量不要使用getBytes,这样会导致混乱。
具体分析一下,从web browser入手,不编码的话,ie会将form表单的输入以ISO-8859-1进行编码,然后根据web server进行第二次编码,(比如resin默认编码就是iso-8859-1),这样还是ISO-8859-1,然后存入数据库时,默认的编码是和操作系统相同的,简体中文就是GB2312。
这样,如果不作任何设置,存入到数据库中的就是系统编码。
从数据库中取出来的时候,web server会将其转为(以resin为例)ISO-8859-1,所以如果你只需要在jsp的html中设置:
<meta http-equiv="content-type" content="text/html;charset=GB2312">就可以搞定。
关键在于了解每一步的字符都转成什么编码。
请指正。
其实我认为我们编码尽量不要使用getBytes,这样会导致混乱。
具体分析一下,从web browser入手,不编码的话,ie会将form表单的输入以ISO-8859-1进行编码,然后根据web server进行第二次编码,(比如resin默认编码就是iso-8859-1),这样还是ISO-8859-1,然后存入数据库时,默认的编码是和操作系统相同的,简体中文就是GB2312。
这样,如果不作任何设置,存入到数据库中的就是系统编码。
从数据库中取出来的时候,web server会将其转为(以resin为例)ISO-8859-1,所以如果你只需要在jsp的html中设置:
<meta http-equiv="content-type" content="text/html;charset=GB2312">就可以搞定。
关键在于了解每一步的字符都转成什么编码。
请指正。