网站建设资讯

NEWS

网站建设资讯

oracle怎么判断乱码 oracle如何判断乱码

Oracle数据出现中文乱码怎么解决

1. 服务器指定字符集与客户字符集不同,而与加载数据字符集一致。

专注于为中小企业提供网站设计制作、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业赛罕免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

解决方法:对于这种情况,只需要设置客户端字符集与服务器端字符集一致就可以了,具体操作如下:

* 查看当前字符集:

SQL select * from sys.props$

2 WHERE NAME=‘NLS_CHARACTERSET’;

NAME value$

NLS_CHARACTERSET ZHS16GBK

可以看出,现在服务器端Oracle数据库的字符集为‘ZHS16GBK’

* 根据服务器的字符集在客户端作相应的配置或者安装Oracle的客户端软件时指定:

如果还没安装客户端,那么在安装客户端时,指定与服务器相吻合的字符集即可;如果已经安装好了客户端,并且客户端为 sql*net 2.0 以下版本,进入Windows的系统目录,编辑oracle.ini文件,用US7ASCII替换原字符集,重新启动计算机,设置生效;否则,如果,客户端为 sql*net 2.0 以上版本,在Win98 下 运 行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE, 第三步选择 Oracle, 第四步选择 NLS_LANG, 键 入 与服 务 器 端 相 同 的 字 符 集

(本例为:HKEY_LOCAL_MACHINE/

SOFTWARE/ORACLE/NLS_LANG :AMERICAN _ AMERICA. ZHS16GBK)。

如果是UNIX客户端,则:

SQL conn / as sysdba

Connected.

SQL SQL UPDATE sys.PROPS$ SET value$=‘SIMPLIFIED CHINESE’

2 WHERE NAME=‘NLS_LANGUAGE’;

2. 服务器指定字符集与客户字符集相同,与加载数据字符集不一致。

解决方法:强制加载数据字符集与服务器端字符集一致。要做到这一点,可以通过重新创建数据库,并选择与原卸出数据一致的字符集,然后IMP数据,这种情况仅仅适用于空库和具有同一种字符集的数据。

解决这类问题,也可以先将数据加载到具有相同字符集的服务器上,然后用转换工具卸出为foxbase 格式或access格式数据库,再用转换工具转入到不同字符集的Oracle数据库中,这样就避免了Oracle字符集的困扰。目前数据库格式转换的工具很多,像power builder5.0以上版本提供的pipeline及Microsoft Access数据库提供的数据导入/导出功能等。

3. 服务器指定字符集与客户字符集不同,与输入数据字符集不一致。

对于这种情况,目前为止都还没有太好的解决方法。

通过上面的了解,我们知道,导致在后期使用数据库时出现种种关于字符集的问题,多半是由于在数据库设计、安装之初没有很好地考虑到以后的需要,所以,我们完全可以通过在服务器上和客户端使用相同的字符集来避免由此类问题引出的麻烦

怎样修改查看Oracle字符集

a.数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。

b.客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,

表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

c.会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session环境变量注册表参数文件

实际情况

我用select * from nls_database_parameters

PARAMETER VALUE

------------------------------ ------------------------------

NLS_LANGUAGE AMERICAN

NLS_TERRITORY AMERICA

NLS_CURRENCY $

NLS_ISO_CURRENCY AMERICA

NLS_NUMERIC_CHARACTERS .,

NLS_CHARACTERSET ZHS16GBK

NLS_CALENDAR GREGORIAN

NLS_DATE_FORMAT DD-MON-RR

NLS_DATE_LANGUAGE AMERICAN

NLS_SORT BINARY

NLS_TIME_FORMAT HH.MI.SSXFF AM

PARAMETER VALUE

------------------------------ ------------------------------

NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY $

NLS_COMP BINARY

NLS_LENGTH_SEMANTICS BYTE

NLS_NCHAR_CONV_EXCP FALSE

NLS_NCHAR_CHARACTERSET AL16UTF16

NLS_RDBMS_VERSION 10.2.0.1.0

说明我在创建数据库时指定的字符集是ZHS16GBK,我用

update sys.props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';

修改了字符集,但插入中文时仍然有问题,这或许就如上面资料所说的通过修改SYS.PROPS$来修改主要是对应客户端的显示,与存储无关,

所以仍旧是乱码。

然后我重新创建了个数据库,指定字符集为AL32UTF8,插入中文就没问题了。

可见我们如果要在数据库中显示中文,在创建数据库时一定哟指定好所用的字符集。

oracle数据库乱码怎么解决

一、pl/sql developer 中文字段显示乱码

原因:因为数据库的编号格式和pl /sql developer的编码格式不统一造成的。

二、查看和修改oracle数据库字符集:

select userenv('language') from dual;

查询结果:

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;

oracle数据库表中某个字段已存在汉字乱码,怎样查找出这些乱码数据,

查询数据库表某字段含“乱码”的数据的一个方法

说明:

在某些情况下,由于字符集不兼容等问题,数据库中的记录可能存在“乱码”,本文就是介绍一个SQL语句把乱码的记录找到。

什么是“乱码”

这是首先需要明确的,其实如果数据库记录了“半个汉字”实际他只会记录一个“?”(Oracle),如果记录的乱码恰好变成另外一个“汉字”和残余字符,那这个新的“汉字”是不能用下面的方法找出来的。

适用范围

查找记录中是否含有ascii码(特别是“?”)的方式找到“乱码”的记录。

SQL模板

Select

*

from

Table_A

t

Where

instr(Name,chr(1))0

or

instr(Name,chr(2))0

or

instr(Name,chr(3))0

or

instr(Name,chr(4))0

or

instr(Name,chr(5))0

or

instr(Name,chr(6))0

or

instr(Name,chr(7))0

or

instr(Name,chr(8))0

or

instr(Name,chr(9))0

or

instr(Name,chr(10))0

or

instr(Name,chr(11))0

or

instr(Name,chr(12))0

or

instr(Name,chr(13))0

or

instr(Name,chr(14))0

or

instr(Name,chr(15))0

or

instr(Name,chr(16))0

or

instr(Name,chr(17))0

or

instr(Name,chr(18))0

or

instr(Name,chr(19))0

or

instr(Name,chr(20))0

or

instr(Name,chr(21))0

or

instr(Name,chr(22))0

or

instr(Name,chr(23))0

or

instr(Name,chr(24))0

or

instr(Name,chr(25))0

or

instr(Name,chr(26))0

or

instr(Name,chr(27))0

or

instr(Name,chr(28))0

or

instr(Name,chr(29))0

or

instr(Name,chr(30))0

or

instr(Name,chr(31))0

or

instr(Name,chr(32))0

or

instr(Name,chr(33))0

or

instr(Name,chr(34))0

or

instr(Name,chr(35))0

or

instr(Name,chr(36))0

or

instr(Name,chr(37))0

or

instr(Name,chr(38))0

or

instr(Name,chr(39))0

or

instr(Name,chr(40))0

or

instr(Name,chr(41))0

or

instr(Name,chr(42))0

or

instr(Name,chr(43))0

or

instr(Name,chr(44))0

or

instr(Name,chr(45))0

or

instr(Name,chr(46))0

or

instr(Name,chr(47))0

or

instr(Name,chr(48))0

or

instr(Name,chr(49))0

or

instr(Name,chr(50))0

or

instr(Name,chr(51))0

or

instr(Name,chr(52))0

or

instr(Name,chr(53))0

or

instr(Name,chr(54))0

or

instr(Name,chr(55))0

or

instr(Name,chr(56))0

or

instr(Name,chr(57))0

or

instr(Name,chr(58))0

or

instr(Name,chr(59))0

or

instr(Name,chr(60))0

or

instr(Name,chr(61))0

or

instr(Name,chr(62))0

or

instr(Name,chr(63))0

or

instr(Name,chr(64))0

or

instr(Name,chr(65))0

or

instr(Name,chr(66))0

or

instr(Name,chr(67))0

or

instr(Name,chr(68))0

or

instr(Name,chr(69))0

or

instr(Name,chr(70))0

or

instr(Name,chr(71))0

or

instr(Name,chr(72))0

or

instr(Name,chr(73))0

or

instr(Name,chr(74))0

or

instr(Name,chr(75))0

or

instr(Name,chr(76))0

or

instr(Name,chr(77))0

or

instr(Name,chr(78))0

or

instr(Name,chr(79))0

or

instr(Name,chr(80))0

or

instr(Name,chr(81))0

or

instr(Name,chr(82))0

or

instr(Name,chr(83))0

or

instr(Name,chr(84))0

or

instr(Name,chr(85))0

or

instr(Name,chr(86))0

or

instr(Name,chr(87))0

or

instr(Name,chr(88))0

or

instr(Name,chr(89))0

or

instr(Name,chr(90))0

or

instr(Name,chr(91))0

or

instr(Name,chr(92))0

or

instr(Name,chr(93))0

or

instr(Name,chr(94))0

or

instr(Name,chr(95))0

or

instr(Name,chr(96))0

or

instr(Name,chr(97))0

or

instr(Name,chr(98))0

or

instr(Name,chr(99))0

or

instr(Name,chr(100))0

or

instr(Name,chr(101))0

or

instr(Name,chr(102))0

or

instr(Name,chr(103))0

or

instr(Name,chr(104))0

or

instr(Name,chr(105))0

or

instr(Name,chr(106))0

or

instr(Name,chr(107))0

or

instr(Name,chr(108))0

or

instr(Name,chr(109))0

or

instr(Name,chr(110))0

or

instr(Name,chr(111))0

or

instr(Name,chr(112))0

or

instr(Name,chr(113))0

or

instr(Name,chr(114))0

or

instr(Name,chr(115))0

or

instr(Name,chr(116))0

or

instr(Name,chr(117))0

or

instr(Name,chr(118))0

or

instr(Name,chr(119))0

or

instr(Name,chr(120))0

or

instr(Name,chr(121))0

or

instr(Name,chr(122))0

or

instr(Name,chr(123))0

or

instr(Name,chr(124))0

or

instr(Name,chr(125))0

or

instr(Name,chr(126))0

or

instr(Name,chr(127))0

如何解决插入Oracle数据中文为乱码问题

1、首先,Oracle查询编码:select * from v$nls_parameters;//看看是否GBK

2、如果是用Servlet或者别的,插入数据之前输出一下,看看是否乱码。

比如:

doPost()

//设置接受编码,但你的页面也必须是UTF-8

response.setContentType("text/html;charset=UTF-8");

doGet()

//下面方式转一下码

String username = new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8");

oracle怎么查乱码数据

ORACLE这个查询乱码数据的方法,是你先要知道这个乱码是怎么产生的,然后才能够去找到原因


本文名称:oracle怎么判断乱码 oracle如何判断乱码
网站地址:http://cdweb.net/article/hjppej.html