环境:tomcat-5.0.28,ms sqlserver2k 中文版,win2k3
由servlet接收参数,然后调用储存过程,插入数据,中文信息全部是乱码,试过了以下2种方法都不行,请高手指点。
1、入库前转码 param=new String(param.getBytes("iso-8859-1"))
2、在servlet里获取参数前设置request.setCharacterEncoding("GBK");cstmt=conn.createStatement();
cstmt = conn.prepareCall("{call SP_addRepositoryMenu(?,?,?,?)}");
cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
cstmt.setString(2, repositoryMenu.getParentMenuId());
cstmt.setString(3, repositoryMenu.getMenuName());
//cstmt.setString(3, new String(repositoryMenu.getMenuName().getBytes("ISO-8859-1"),"UTF-8"));
//cstmt.setString(3, new String(repositoryMenu.getMenuName().getBytes("ISO-8859-1")));System.out.println("菜单名称: " + repositoryMenu.getMenuName()); cstmt.setInt(4, repositoryMenu.getOperaterId());
cstmt.executeUpdate();
result = cstmt.getInt(1);
cstmt.execute(sql);
cstmt.close();
在控制台打印出的中文信息正常,但写入数据库就成乱码了。
由servlet接收参数,然后调用储存过程,插入数据,中文信息全部是乱码,试过了以下2种方法都不行,请高手指点。
1、入库前转码 param=new String(param.getBytes("iso-8859-1"))
2、在servlet里获取参数前设置request.setCharacterEncoding("GBK");cstmt=conn.createStatement();
cstmt = conn.prepareCall("{call SP_addRepositoryMenu(?,?,?,?)}");
cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
cstmt.setString(2, repositoryMenu.getParentMenuId());
cstmt.setString(3, repositoryMenu.getMenuName());
//cstmt.setString(3, new String(repositoryMenu.getMenuName().getBytes("ISO-8859-1"),"UTF-8"));
//cstmt.setString(3, new String(repositoryMenu.getMenuName().getBytes("ISO-8859-1")));System.out.println("菜单名称: " + repositoryMenu.getMenuName()); cstmt.setInt(4, repositoryMenu.getOperaterId());
cstmt.executeUpdate();
result = cstmt.getInt(1);
cstmt.execute(sql);
cstmt.close();
在控制台打印出的中文信息正常,但写入数据库就成乱码了。
解决方案 »
- shh报错ognl.OgnlException: source is null for getProperty(null, overtime )
- 求解:关于hibernate与sql连接配置的问题
- Ext中ComboBox下拉框中无值
- 怎么不能动态实现HTML元素的隐藏/显示/添加?
- WEB发布公网问题 问个我脑子一片空白的问题
- onclick问题
- FadeOut.class如何改变字体大小
- 怎么显示数据库的image
- 我的jsp在jb7下编译是出现如下错误
- 请问用什么方法取得表中的记录数?是getRowCount么?
- 采用tomcat5.05作服务器,点击超链接下载时浏览器直接打开文件,并出现乱码
- 【问题】一个JSP分页程序,但是我不会用。.. :)谁可以帮帮我。..
param=new String(param.getBytes("iso8859_1"),"GBK");吗?不过按说只要设置了request.setCharacterEncoding("GBK");就应该没问题。是不是你的文件本身不是GBK编码?有没有:
<%@ page contentType="text/html; charset=GBK%>告诉客户端用GBK解码
<%request.setCharacterEncoding("GBK");%>告诉tomcat的默认解码器用GBK解码,按说应该没问题的。
new String(param.getBytes("gb2312"),"iso8859_1");多转了一次码。
1) 所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
2) 在应用服务器中的server.xml方件中找到设置服务器端口的行,一般是这样开头:”<Connector port="8080"”,
3) 在找到的行"<Connector"开头的字符串后加上:URIEncoding="UTF-8" ,保存文件
--------------------------------------------------------------------------
jsp页面有乱码解决方法 所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
<%@ page contentType="text/html; charset=UTF-8">
--------------------------------------------------------------------------
jsp单个中文参数乱码解决方法 用这个转换一下:
<%!String trans(String chi)
{
string result =null;
byte temp[];
temp=chi.getBytes("iso=8859-1");
result= new String(temp);
}
%>
或者直接这样:
<%
request.setCharacterEncoding("UTF-8");
out.println(request.getParameter("参数ID")
%>
--------------------------------------------------------------------------
{
if(s==null){s="";}
try
{
byte[] b=s.getBytes("ISO-8859-1");
s=new String(b);
}
catch(Exception e)
{
s="";}
return s;
}加上这个方法就OK 了