如果客户端设定的字符集NLS_LANG和服务器端的字符集设定NLS_CHARACTERSET不一致的话,数据在客户端和服务器端进行流动时会有一个转换
客户端字符集<->UNICODE<->服务器端字符集
字符集一致的时候不会发生转换。
而sqlplus上显示的数据要求os的支持。
那么就可以知道产生乱码应该有以下几种
1.数据没有正确存储
当客户端字符集设定和服务器端字符集设定不一致的时候,客户端录入的字符无法正确转换为服务器端所支持的字符,也就是说录入字符属于客户端的字符集,但是不属于服务器端的字符集。这种情况下,字符是没有正确存入数据库,全部转换为默认字符“?”
解决方法:
a.服务器这种不支持的字符,不允许录入
b.客户端和数据库端的字符集都设定为支持录入字符的字符集
c.统一客户端和数据库端的字符集
d.使用unicode存储字符
2.数据没能正确读取
和1一样,如果服务器端原有的字符,无法正确转换为客户端字符,那么也会乱码
解决方法同1
3.数据的转换没有任何问题,而客户端无法支持
这个因为客户端app的局限性造成的,比如sqlplus就有很多字符集无法正确表示
解决方法:
a.把客户端的字符集NLS_LANG设定为app/os支持的字符集
b.如果app/os的字符集可更改,改成与客户端的字符集设定NLS_LANG同样
--------------
服务器端的字符集设置(一旦设置,一般不可更改)
select * from nls_database_parameters;
使用以下sql可查寻本次链接设置
select * from v$nls_parameters;
分享到:
相关推荐
### PL/SQL中文乱码原因分析 PL/SQL中文乱码的根本原因在于数据库与应用程序(如PL/SQL Developer、SQL*Plus、Toad等)之间的字符集设置不一致。当数据库存储的数据采用某种字符集编码,而应用程序尝试用不同的字符...
#### 二、乱码原因分析 1. **客户端和服务端编码不一致**:这是最常见的原因。当客户端使用的字符集与服务器端的字符集不匹配时,就会出现乱码现象。例如,如果客户端使用的字符集是GBK,而服务端使用的字符集是UTF...
#### 乱码原因分析 1. **数据库字符集不匹配**:这是最常见的原因之一。当客户端与服务器端的字符集设置不一致时,就可能出现乱码现象。 2. **操作系统字符集设置**:如果操作系统默认字符集与数据库字符集不一致,...
其根本原因是终端仿真器与Linux系统的默认设置不匹配。 2. **上下方向键出现乱码**:这个问题也是由于终端仿真器的设置与Linux系统之间存在不一致。具体表现为按下上下方向键时,控制台显示的不是上一条命令的历史...
3. **乱码原因**:字符乱码通常由以下原因引起: - 客户端和服务器之间的字符集不匹配。 - 数据迁移过程中字符集转换不当。 - 数据导入导出时未指定正确字符集。 - 表格或列的字符集与数据库全局字符集不一致。 ...
通过对Oracle 8i字符集乱码问题的深入分析,我们了解到问题的根本在于Oracle 8i中部分程序采用了Java技术实现,而这些Java程序并不受传统NLS_LANG参数的影响。通过修改特定的配置文件dbappscfg.properties,并针对...
总之,Oracle数据库的错误追踪涉及多个层面,需要综合运用操作系统日志、数据库日志、安装日志和网络配置文件等多种资源进行分析。理解这些工具和方法,有助于快速定位并解决问题,确保数据库系统的稳定运行。
#### 问题分析 在Windows系统中,SecureCRT默认不支持使用读取行库(readline library)的功能,而读取行库是用于处理文本输入并提供命令历史等功能的关键组件。因此,在SecureCRT中使用SQL*Plus时,按下上下箭头键并...
- **需求分析**:包括架构分析和设计,业务逻辑分析和设计,以及界面设计,确保系统功能与用户体验的合理性。 - **开发环境搭建**:如文中所述,涉及到Oracle数据库的配置,MyEclipse项目创建等。 - **开发和测试...
这些错误可能由于多种原因产生,例如操作系统配置问题、软件兼容性、网络连接故障等。解决这些问题需要掌握一定的追踪方法。 首先,针对**数据库安装时的错误**,最常见的有无法启动安装程序、乱码问题、先决条件...
10. **Client查询日志超时原因**:当Client查询日志超时时,可能的原因包括查询的日志记录条数过多、服务器端lmf(Log Management Facility)或diffs(Distributed File System)进程运行不正常,以及前后台链路不...