[转帖]向表中插入中文字符,查询时乱码问题_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3940 | 回复: 0   主题: [转帖]向表中插入中文字符,查询时乱码问题        下一篇 
derek
注册用户
等级:中校
经验:1550
发帖:209
精华:0
注册:2011-7-21
状态:离线
发送短消息息给derek 加好友    发送短消息息给derek 发消息
发表于: IP:您无权察看 2011-8-1 21:47:40 | [全部帖] [楼主帖] 楼主

当创建了某张表,向表中插入中文字符后,在查询时插入的中文出现乱码

[oracle@test1 ~]$ sqlplus scott/tiger

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jun 27 09:55:58 2011

Copyright (c) 1982,  2005,  Oracle.  All rights reserved.

Connected to:

Oracle Database  10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and  Data Mining options

SQL> create table t1(name varchar2(10));

Table created.

SQL> insert into t1 values('啊');

1 row created.

SQL> select * from t1;

NAME

----------

???

原因:系统与 数据库字符集不匹配

解决方法:

将系统的字符集调整为和数据库一致

查询数据库字符集

SQL> show parameter nls_lang

NAME                                 TYPE        VALUE

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

nls_language                         string      AMERICAN

SQL> col value format a40

SQL> 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

20 rows selected.

SQL>

或者

SQL> col value$ format a40

SQL> select name,value$ from props$;

NAME                           VALUE$

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

DICT.BASE                      2

DEFAULT_TEMP_TABLESPACE        TEMP

DEFAULT_PERMANENT_TABLESPACE   USERS

DEFAULT_TBS_TYPE               SMALLFILE

NLS_LANGUAGE                   AMERICAN

NLS_TERRITORY                  AMERICA

NLS_CURRENCY                   $

NLS_ISO_CURRENCY               AMERICA

NLS_NUMERIC_CHARACTERS         .,

NLS_CHARACTERSET               ZHS16GBK

NLS_CALENDAR                   GREGORIAN

NAME                           VALUE$

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

NLS_DATE_FORMAT                DD-MON-RR

NLS_DATE_LANGUAGE              AMERICAN

NLS_SORT                       BINARY

NLS_TIME_FORMAT                HH.MI.SSXFF AM

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

NAME                           VALUE$

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

NLS_NCHAR_CHARACTERSET         AL16UTF16

NLS_RDBMS_VERSION              10.2.0.1.0

GLOBAL_DB_NAME                 ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

EXPORT_VIEWS_VERSION           8

DBTIMEZONE                     00:00

27 rows selected.

影响oracle数据库字符集最重要的参数是NLS_LANG参数,它的格式如下:

NLS_LANG=language_territory.characterset

它有三个组成部分:语言、地域和字符集

language指定 服务器消息语言,territory指定服务器的日期和数字格式,characterset指定字符集

经上所查,数据库的NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

将其添加到系统

$export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

或者

$ echo 'NLS_LANG=AMERICAN_AMERICA.ZHS16GBK' >> ~/.bash_profile

$ source ~/.bash_profile

然后再想表中插入数据就能正常显示了




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论