社区
非技术区
帖子详情
请问关于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.
请问应该如何解决,谢谢!!!!
...全文
97
7
打赏
收藏
请问关于jdbc中文处理的问题
我在jsp页面上用jdbc连oracle 8i,结果从结果集中得到的中文为乱码,但是页面上的其他中文显示正常,还有,如果我用jdbc-odbc桥连access数据库,得到的中文也很正常。 我用select userenv('language') from dual 查到的的Oracle 8i的字符集是simplified chinese-china.zhs16gbk. 请问应该如何解决,谢谢!!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
中文
问题
的方法。 首先,我们需要理解MySQL和Java之间的编码
问题
。MySQL数据库支持多种字符集,如GBK、UTF-8等,而Java程序通常使用UTF-8作为默认编码。当Java通过
JDBC
连接MySQL...
MySQL +
JDBC
彻底解决
中文
乱码
问题
### MySQL +
JDBC
彻底解决
中文
乱码
问题
#### 一、引言 在使用 MySQL 数据库进行数据存储时,可能会遇到
中文
字符显示为乱码的
问题
。这种情况通常出现在数据库连接参数配置不当或数据库本身的字符集设置不正确时。...
JDBC
入门
中文
文档
**
JDBC
(Java Database Connectivity)入门
中文
文档**
JDBC
是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。它是Java与各种数据库进行交互的一种标准方式,...
JDBC
4.3规范文档
规范文档还包含了更多技术性的描述,关于
JDBC
驱动、连接数据库、执行SQL语句、事务管理、元数据
处理
和资源管理等核心概念和技术的详细说明。 在学习
JDBC
的过程中,了解其规范是至关重要的。它不仅提供了接口的定义...
JDBC
代码手册
中文
PDF版
**
JDBC
代码手册
中文
PDF版**是一份专为Java开发者准备的实用参考资料,它详细介绍了如何使用Java Database Connectivity(
JDBC
)技术来连接并操作数据库。
JDBC
是Java平台的标准接口,允许Java程序与各种数据库进行...
非技术区
23,409
社区成员
70,524
社区内容
发帖
与我相关
我的任务
非技术区
Java 非技术区
复制链接
扫一扫
分享
社区描述
Java 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章