社区
非技术区
帖子详情
请问关于jdbc中文处理的问题
chenzhenmin
2002-01-28 03:15:04
我在jsp页面上用jdbc连oracle 8i,结果从结果集中得到的中文为乱码,但是页面上的其他中文显示正常,还有,如果我用jdbc-odbc桥连access数据库,得到的中文也很正常。
我用select userenv('language') from dual 查到的的Oracle 8i的字符集是simplified chinese-china.zhs16gbk.
请问应该如何解决,谢谢!!!!
...全文
111
7
打赏
收藏
请问关于jdbc中文处理的问题
我在jsp页面上用jdbc连oracle 8i,结果从结果集中得到的中文为乱码,但是页面上的其他中文显示正常,还有,如果我用jdbc-odbc桥连access数据库,得到的中文也很正常。 我用select userenv('language') from dual 查到的的Oracle 8i的字符集是simplified chinese-china.zhs16gbk. 请问应该如何解决,谢谢!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
darkxi
2002-01-29
打赏
举报
回复
String TestStr = new String(TestStr.getBytes("ISO8859-1"),"GBK");
设储存结果的String为TestStr
gzgangster
2002-01-28
打赏
举报
回复
这种错误我也碰到过,是编码问题引起的.
因为JAVA的默认编码是16位的Unicode,而数据库的编码却大都是8位的,解决的办法是把二者的编码强制转换成统一的.
如:new String("需转换的目标文本串","iso-8859-1");即把原本是Unicode编码的字符串转换成iso-8859-1,然后就可以正确存如数据库里了.
另外你也可以考虑不采用JAVA的String(包括跟String有关的,如BufferString等),而是使用byte数组. PreparedStatement.setBytes(int length,byte[] content);
huangkai
2002-01-28
打赏
举报
回复
package com.minij2ee.util;
import java.net.URLEncoder;
import java.net.URLDecoder;
/**
uniString类用于String在不同encode间进行转换,用于解决JSP和EJB中的中文问题。
创建uniString时需要指定字符串的编码方式(省略表示使用操作系统默认编码),
以后就可以使用该uniString对象获取字符串的任何一种编码形式而不必关心其原先的编码。
@author huangkai@online.sh.cn
*/
public final class uniString implements java.io.Serializable
{
private String m_str;
private String m_enc;
/**
返回uniString内含的字符串。
*/
public String toString()
{
return m_str;
}
/**
构造一个空的uniString对象,编码方式为操作系统默认编码。
*/
public uniString()
{
m_str="";
m_enc="";
}
/**
构造一个uniString对象,编码方式为操作系统默认编码。
@param str uniString对象内含的字符串。
*/
public uniString(String str)
{
m_str=str;
m_enc="";
}
/**
构造一个uniString对象,编码方式为操作系统默认编码。
@param str uniString对象内含的字符串。
@param enc str指定的字符串的编码方式,常用的有"iso-8859-1","gb2312","GBK","utf-8"等,""表示操作系统默认编码。
*/
public uniString(String str,String enc)
{
m_str=str;
m_enc=enc;
}
/**
将一个uniString连接到当前uniString的尾部。
@param str 连接的uniString。
@return 返回连接后的uniString。
*/
public uniString append(uniString str)
{
m_str+=str.cvt(m_enc);
return this;
}
/**
将uniString转换成enc指定的编码。若uniString的编码同enc相同,则不会进行转换过程,直接返回uniString内含的字符串。
@param enc 转换的编码,常用的有"iso-8859-1","gb2312","GBK","utf-8"等,""表示操作系统默认编码。
@return 返回转换后的字符串,一般用于显示或数据库存储。
*/
public String cvt(String enc)
{
if(m_enc.compareTo(enc)!=0)
{
try
{
byte[] bytes=m_enc.compareTo("")==0?m_str.getBytes():m_str.getBytes(m_enc);
m_str=enc.compareTo("")==0?new String(bytes):new String(bytes,enc);
m_enc=enc;
}
catch(java.io.UnsupportedEncodingException e)
{
throw new RuntimeException("Unsupported encoding type.");
}
}
return m_str;
}
/**
return cvt("gb2312");
*/
public String gb()
{
return cvt("gb2312");
}
/**
return cvt("iso-8859-1");
*/
public String iso()
{
return cvt("iso-8859-1");
}
/**
return cvt("utf-8");
*/
public String utf8()
{
return cvt("utf-8");
}
/**
return cvt("");
*/
public String sys()
{
return cvt("");
}
/**
encode返回将uniString内含字符串编码成7bit后的字符串。uniString内含字符的内容没有改变。
一些特殊的情况下需要使用7bit的编码。
*/
public String encode()
{
try
{
StringBuffer sb=new StringBuffer();
byte[] bytes=m_enc.compareTo("")==0?m_str.getBytes():m_str.getBytes(m_enc);
for(int i =0;i<bytes.length;i++)
{
char ch;
ch=Character.forDigit((bytes[i]>>4)&0xF,16);
sb.append(ch);
ch=Character.forDigit(bytes[i]&0xF,16);
sb.append(ch);
}
return sb.toString();
}
catch(java.io.UnsupportedEncodingException e)
{
throw new RuntimeException("Unsupported encoding type.");
}
}
/**
decode将encode编码的7bit字符串解码,解码后的字符串存储在uniString中。
*/
public void decode(String encodestr)
{
StringBuffer sb=new StringBuffer();
int i=0;
while(i!=encodestr.length())
{
sb.append((char)Integer.parseInt(encodestr.substring(i,i+2),16));
i+=2;
}
m_str=new uniString(sb.toString(),"iso-8859-1").cvt(m_enc);
}
}
p_tangnj
2002-01-28
打赏
举报
回复
自己转iso->gbk不行就gbk->iso
ggyy
2002-01-28
打赏
举报
回复
关注!
chenzhenmin
2002-01-28
打赏
举报
回复
请问哪里可以下载电子版????谢谢!!!
lijunyi
2002-01-28
打赏
举报
回复
JAVA2从入门到精通里有介绍
mysql与
JDBC
中文
问题
的解决方法
此文档中详细的记载了,mysql与
JDBC
中文
问题
的解决方法,希望可以帮助到你!
JDBC
入门
中文
文档
JDBC
入门
中文
文档
JDBC
4.3规范文档
JDBC
4.3规范文档,
JDBC
标准主要提供一套api规范,第三方应用通过实现
JDBC
的接口并提供一个jar包给应用程序调用。深入全面学习
JDBC
,请从规范开始。
Jdbc
连接oracle远程数据库
中文
乱码解决
NULL 博文链接:https://joinyo.iteye.com/blog/1947696
JDBC
代码手册
中文
PDF版
java 连接数据库,对数据库的增删改查操作,有说明,有详细的实例代码
非技术区
23,407
社区成员
70,513
社区内容
发帖
与我相关
我的任务
非技术区
Java 非技术区
复制链接
扫一扫
分享
社区描述
Java 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章