有关asp访问oracle的中文字符的查询及显示问题?

xm_44 2002-09-11 05:23:36
我的机器的字符集的设置和服务器是一样的都是:
AMERICAN_AMERICA.WE8ISO8859P1
我是在ODBC里用ORACLE ODBC DRIVER驱动配置了一个数据源:ora
然后连接数据库的程序如下:
set conn=server.CreateObject("adodb.connection")
connstr="Persist Security Info=True;dsn=ora;uid=stay;pwd=query"
conn.Open connstr
set rs=server.CreateObject("adodb.recordset")
。。。
rs.Open sql,conn,1,3


可是就是明明有那条记录,我根据中文姓名查询就是查询不出这条记录出来,
而是查询出另外一条乱码记录,而通过身份证号查能查询出来,而且能正确显示中文姓名。

请问这是为什么????
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xm_44 2002-09-13
  • 打赏
  • 举报
回复
我把服务器重装了,字符集为简体中文,就没问题了
iStringTheory 2002-09-12
  • 打赏
  • 举报
回复
NLS_CHARACTERSET这个参数应该是ZHS16GBK,如不是,改为它。

SQL*Plus中修改方法:
SQL> update props$ set value$='新字符集' where name='NLS_CHARACTERSET';

操作系统中修改方法:
connect internal
alter database ORCL character set ZHS16GBK;
alter database ORCL national character set ZHS16GBK;


2、检查操作系统级Oracle汉字显示的字符集

运行regedit,定位到:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

找到以下字符串
NLS_LANG

检查是否以下内容,如不是,改之
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
iStringTheory 2002-09-12
  • 打赏
  • 举报
回复
NLS_CHARACTERSET:WE8ISO8859P1中把WE8ISO8859P1改为ZHS16GBK

将NLS_LANG中的AMERICAN_AMERICA.WE8ISO8859P1改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK试试
xm_44 2002-09-12
  • 打赏
  • 举报
回复
我的服务器如下:
SQL> conn sys/change_on_install@test
Connected.
SQL> desc props$
Name Null? Type
----------------------------------------- -------- -----------------
NAME NOT NULL VARCHAR2(30)
VALUE$ VARCHAR2(4000)
COMMENT$ VARCHAR2(4000)

SQL> col value$ format a40
SQL> select name,value$ from props$;

NAME VALUE$
------------------------------ --------------------------------------
DICT.BASE 2
DBTIMEZONE 0:00
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET WE8ISO8859P1
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN

NAME VALUE$
------------------------------ --------------------------------------
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 TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_NCHAR_CHARACTERSET WE8ISO8859P1
NLS_RDBMS_VERSION 8.1.7.0.0
GLOBAL_DB_NAME ORA1
EXPORT_VIEWS_VERSION 8

22 rows selected.


我机器(客户端)注册表情况如下:
运行regedit
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE下:NLS_LANG为:NA
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/ALL_HOMES/IDO下:NLS_LANG为:NA
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/MOME0下:NLS_LANG为:AMERICAN_AMERICA.WE8ISO8859P1

这些设置都和服务器段的注册表一样,请问我要改吗?
iStringTheory 2002-09-12
  • 打赏
  • 举报
回复
你试试吧,但愿能解决你的问题
iStringTheory 2002-09-12
  • 打赏
  • 举报
回复
1、检查服务器上Oracle数据库的字符集

SQL> conn sys/change_on_install
连接成功.

SQL> desc props$
列名 可空值否 类型
------------------------------- -------- ----
NAME NOT NULL VARCHAR2(30)
VALUE$ VARCHAR2(2000)
COMMENT$ VARCHAR2(2000)

SQL> col value$ format a40
SQL> select name,value$ from props$;

NAME VALUE$
------------------------------ -------------------------
DICT.BASE 2
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_DATE_FORMAT DD-MON-YY
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_CALENDAR GREGORIAN
NLS_RDBMS_VERSION 7.3.4.0.0
GLOBAL_DB_NAME ORACLE.WORLD
EXPORT_VIEWS_VERSION 3

查询到14记录.

NLS_CHARACTERSET这个参数应该是ZHS16GBK,如不是,改为它。

SQL*Plus中修改方法:
SQL> update props$ set value$='新字符集' where name='NLS_CHARACTERSET';

操作系统中修改方法:
connect internal
alter database ORCL character set ZHS16GBK;
alter database ORCL national character set ZHS16GBK;


2、检查操作系统级Oracle汉字显示的字符集

运行regedit,定位到:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

找到以下字符串
NLS_LANG

检查是否以下内容,如不是,改之
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
xm_44 2002-09-12
  • 打赏
  • 举报
回复
你是要我修改服务器吗?

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧