A. 如题,oracleblob读取为什么部分乱码
blob类型是存放二进制流的,不应该使用这种类型存放字符数据的,
应该使用clob类型存放大字段字符数据,存放的二进制流可能是文件,
图片或字符,如果存的是图片,你读取解码成字符,肯定是要乱码的.
希望能帮助你。
B. jsp/java读取mysql的blob类型字段中文乱码问题 代码如下,但是出来的是乱码
知道了.
(2):手动插入中文数据,insert.....然后在mysql的窗口中查看是否正常显示.
(3):根据测试结果确定是页面问题还是数据库设置问题
1:如果是页面问题,相信你知道,怎么解决.
2:如果是数据插入以后就变成了乱码,那就是你的数据库字符集有问题,找到my.ini
[client]
port=3306
[mysql]
加上:default-character-set=gbk
也可以通过数据库设置向导来设置(windows下才有)
3:如果还是乱码的话那就把页面和数据库的字符设置成一样的就好了
希望对你有帮助
一般还是建议使用jbk
另外,虚机团上产品团购,超级便宜
C. java mysql数据库 Blob乱码 求救。
应该是
字符集
的问题。
最好都设成utf-8
包括数据库,后台,还有前台页面的编码
D. pl/sql developer中文乱码,为什么呢怎么解决Oracle问题
pl/sqldeveloper 中文字段显示乱码:
原因:因为数据库的编号格式和pl /sqldeveloper的编码格式不统一造成的。
解决方法如下:
一、查看和修改oracle数据库字符集:
select userenv('language') from al;
二、修改pl/sql developer 的编码格式:
在windows中创建一个名为“NLS_LANG”的系统环境变量,设置其值为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,然后重新启动 pl/sql developer,这样检索出来的中文内容就不会是乱码了。
如果想转换为UTF8字符集,可以赋予“NLS_LANG”为 “AMERICAN_AMERICA.UTF8”,然后重新启动 pl/sql developer。其它字符集设置同上。
(4)plsqlblob字段乱码扩展阅读:
ORACLE数据库常见问题及诊断方法 :
1,ORA-12571、ORA-03113、ORA-03114、ORA-01041
特征:
客户端(代理或应用服务器)有时报这类断连错误。
原因:
如果偶尔出现一次,则可能为网络原因或用户异常中止,如果经常出现则为客户端与服务端的字符集不一致。
措施:
如果偶尔出现,可在服务端的协议配置文件PROTOCOL.ORA中增加一行TCP.NODELAY=YES。
如果经常出现,则为客户端与服务端字符集不一致或网络原因。客户端的字符集在注册表里定义:HKEY__LOCAL__MACHINE/SOFTWARE/ORACLE/NLS__LANG。在客户端注册表中的TCP参数项中设置TCPMAXDATARETRANSMITIONS=20。
2,ORA-01000
特征:
达到会话允许的最大游标数。
原因:
达到会话允许的最大游标数。
措施:
在初始化文件INIT.ORA文件中增加OPEN_CURSORS的数量,一般要求大于200。
E. 如何解决oracle blob字段 的乱码问题
字符串以blob以byte[] 二进制的形式存成blob字段
案例一:
oracle数据库服务器系统使用的是UTF-8编码或者是AL32UTF8编码
2.在Web应用中已经将请求编码设置为UTF-8编码
3二进制数据的取得
1
2
3
4
5
6
7
8
9
10
11
Blob blogObj = rst.getBlob("CONTENT");
if(blogObj!=null){
byte[] content = blogObj.getBytes(1, (int) blogObj.length());
try {
news.setContent(new String(content));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
乱码问题的解决方法:
news.setContent(new String(content,“UTF-8”));
案例二:读取blob,解决oracle中blob字段下载后的乱码问题
解决方法:注意不能按照像其他数据库那样的取法,而注意使用getBlob()这个oracle特有的方法。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (queryResult.next()) ...{
tfzn018KtfjxxPO.setTec_attachid(queryResult.getLong("TEC_ATTACHID"));
tfzn018KtfjxxPO.setTec_attachpostfix(queryResult.getString("TEC_ATTACHPOSTFIX"));
java.sql.Blob blob = queryResult.getBlob("TEC_ATTACHCONTENT");
InputStream is = blob.getBinaryStream();
int bytesRead = 0;
byte[] buffer = new byte[8192];
// 从输入流读到字节数组
while ((bytesRead = is.read(buffer, 0, 8192)) != -1) ...{
// 从字节数组到输出流
baos.write(buffer, 0, bytesRead);
}
byte[] bufferFile = baos.toByteArray();
tfzn018KtfjxxPO.setTec_attachcontent(bufferFile);
connection.commit();
}
总结如下:
1,导入导出的方法有问题,可能需要指定什么参数。
2,数据库版本不同,对blob的处理方法不一致所致。
3,jdbc连接问题。
通过注册表修改
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0
NLS_LANG 改为你需要的字符集.
常用字符集(暂时只收集到两个)
AMERICAN_AMERICA.WE8ISO8859P1
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
american_america.AL32UTF8
1--------- AMERICAN_AMERICA.zhs16gbk
2--------- AMERICAN_AMERICA.utf8
修改下注册表即可。
F. plsql存储过程乱码
可能当时你创建存储过程时,所使用客户端的字符集不正确,而能正常显示中文的客户端字符集是正确的,你只要找到创建存储过程的脚本,在正确字符集的客户端上重新执行一下就行
了
G. plsql索性名称乱码的原因
查看一些数据库服务器和客户端的额字符集有没有不同的:
复制代码
代码如下:
select
*
from
nls_database_parameters;
select
*
from
nls_instance_parameters;
select
*
from
v$nls_parameters
t
where
t.PARAMETER
='NLS_LANGUAGE'
or
t.PARAMETER
='NLS_CHARACTERSET';
select
*
from
nls_session_parameters;
1.设置本地客户端编码:
进入
我的电脑,属性,高级,环境变量,添加2项:
LANG=zh_CN.GBK
NLS_LANG="SIMPLIFIED
CHINESE_CHINA.ZHS16GBK"
2.更加直接的方法就是在plsql的安装文件下创建一个txt文件
复制代码
代码如下:
set
nls_lang=simplified
chinese_china.ZHS16GBK
PLSQLDev.exe
然后重命名为bat可执行文件。将上面的nls_lang配置到plsql中去。
H. 为什么blob字段中明明是中文取出却变乱码
也许你存入时字符的编码方式和你取出时是不同的 !
另,早期的数据库在选择字符集时建议采用缺省值而不是采用“想当然的”中文字符集,如此可以正常处理中文。 现在是否还是这样呢 !?
I. plsql嫖猚sv格式为什么是乱码
一、pl/sql developer 中文字段显示乱码
原因:因为数据库的编号格式和pl /sql developer的编码格式不统一造成的。
二、查看和修改oracle数据库字符集:
select userenv('language') from al;
查询结果:
SIMPLIFIED CHINESE_CHINA.AL32UTF8
--修改oracle数据库字符集:(在SQL Plus中)
sql> conn / as sysdba;
sql> shutdown immediate;
database closed.
database dismounted.
oracle instance shut down.
sql> startup mount;
oracle instance started.
total system global area 135337420 bytes
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
database mounted.
sql> alter system enable restricted session;
system altered.
sql> alter system set job_queue_processes=0;
system altered.
sql> alter system set aq_tm_processes=0;
system altered.
sql> alter database open;
database altered.
sql> alter database character set internal_use JA16SJIS;
sql> shutdown immediate;
sql> startup;
三、修改pl/sql developer 的编码格式:
在windows中创 建一个名为“NLS_LANG”的系统环境变量,设置其值为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,
然后重新启动 pl/sql developer,这样检索出来的中文内容就不会是乱码了。如果想转换为UTF8字符集,可以赋予“NLS_LANG”为 “AMERICAN_AMERICA.UTF8”,然后重新启动 pl/sql developer。其它字符集设置同上
J. 怎么把plsql里面的数据乱码
开始-运行-输入regedit-回车进入注册表,依次单击HKEY_LOCAL_MACHINE--->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1(不同版本的Oracle显示的都不太一样,但都会包含home这个单词),找到“NLS_LANG”,查看数值数据是否为:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,如果不是就将它设置为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK。”