![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
oracle 10g下sql插入中文怎么是问号?
服务端字符集设置:NLS_LANGUAGEAMERICANNLS_TERRITORYAMERICANLS_CURRENCY$NLS_ISO_CURRENCYAMERICA...
服务端字符集设置:
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARAC .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
SUBSTR(PARAMETER,1,18) SUBSTR(VALUE,1,20)
/etc/sysconfig/i18n下配置:
LANG="zh_CN.gb2312"
SYSFONT="latarcyrheb-sun16"
[oracle@localhost ~]$ echo $NLS_LANG
American_America.ZHS16GBK
配置就这些了,帮忙看看问题出现在什么地方? 展开
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARAC .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
SUBSTR(PARAMETER,1,18) SUBSTR(VALUE,1,20)
/etc/sysconfig/i18n下配置:
LANG="zh_CN.gb2312"
SYSFONT="latarcyrheb-sun16"
[oracle@localhost ~]$ echo $NLS_LANG
American_America.ZHS16GBK
配置就这些了,帮忙看看问题出现在什么地方? 展开
6个回答
展开全部
你是在服务器端插入数据的吧,尝试在XP的客户端输入数据试试。
这是因为字符集的问题造成的
你系统字符集是zh_CN.gb2312
环境变量字符集是ZHS16GBK
服务器数据库字符集是 ZHS16GBK
由于你环境变量字符集和你的服务器数据库一样,所以欺骗了数据库,你输入中文没有进行转码,所以数据库保存的字符代码是zh_CN.gb2312的代码,而该代码在ZHS16GBK里找不到对应的字符,它就会用?符号表示。
解决方法把你的环境变量字符集修改得和你操作系统字符集合一样或者是超集就可以了
export NLS_LANG=American_America.ZHS16CGB231280
这是因为字符集的问题造成的
你系统字符集是zh_CN.gb2312
环境变量字符集是ZHS16GBK
服务器数据库字符集是 ZHS16GBK
由于你环境变量字符集和你的服务器数据库一样,所以欺骗了数据库,你输入中文没有进行转码,所以数据库保存的字符代码是zh_CN.gb2312的代码,而该代码在ZHS16GBK里找不到对应的字符,它就会用?符号表示。
解决方法把你的环境变量字符集修改得和你操作系统字符集合一样或者是超集就可以了
export NLS_LANG=American_America.ZHS16CGB231280
展开全部
编码问题 客户端字符集设置的和数据库端的字符集一样才行
[Q]怎么样查看数据库字符集
[A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。
客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,
表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
[Q]怎么样查看数据库字符集
[A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。
客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,
表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可能是该Oralce安装时只是英文版本,没有中文字库,导致插入中文后它不认识中文,只好以问号出现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把你的中文转换成utf-8的格式
再插入就可以了
再插入就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在环境变量中增加如下变量:
变量名:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
变量名:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询