oracle中文乱码的问题

ajo413 2013-02-18 08:53:06
首先本机和服务器的字符集都为american_america.us7ascii
我用了一个存储过程,使用游标返回值

1.在表A中存储有中文字段column1
open cs for select column1 from a ;

这样的语句,在程序中(asp.net)就可以正确获取到中文的字符

2.直接赋值中文
open cs for select '成功' from dual ;

这样的语句,在程序中就是乱码

请问,这样是为什么呢?!!
...全文
1939 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24564131 2014-12-17
  • 打赏
  • 举报
回复
用OleDbConnection链连接不能使用游标你是怎么解决的
ajo413 2013-02-25
  • 打赏
  • 举报
回复
这个问题出在了数据库的连接上,我本来使用oracleconnection去链接数据库的,然后改成了oledbconnection去连接,就好了
  • 打赏
  • 举报
回复
留意,我也遇到了同样的问题~
ajo413 2013-02-18
  • 打赏
  • 举报
回复
引用 12 楼 dobetterthatnthink 的回复:
要搞清楚这是在数据库中过程写的,还是前端asp中写的,如果是前端和asp的代码页有关。如果是后端过程,就没有什么可以修改的。
额,我用的两种方法,都是在数据库中的存储过程写的呢
多壮志 2013-02-18
  • 打赏
  • 举报
回复
要搞清楚这是在数据库中过程写的,还是前端asp中写的,如果是前端和asp的代码页有关。如果是后端过程,就没有什么可以修改的。
ajo413 2013-02-18
  • 打赏
  • 举报
回复
引用 6 楼 Rexmax 的回复:
你确定服务器和客户端上面编码字符集是一样的都为american_america.us7ascii
是的哦
ajo413 2013-02-18
  • 打赏
  • 举报
回复
引用 7 楼 nwwygs 的回复:
引用 5 楼 ajo413 的回复:引用 2 楼 nwwygs 的回复: 你用的是什么编辑器阿,PL/SQL吗? 如果是,调整一下里面是字体试试看。 Tool > Preferences > User Interface > Font 你把Editor,Grid里面的script改成CHINESE得。 参照下面的截图: 字符集里居然没有中文 你先把……
按照这个方法,没有成功额,还是乱码……
ajo413 2013-02-18
  • 打赏
  • 举报
回复
引用 8 楼 fw0124 的回复:
us7ascii存中文会没有问题吗?
存的倒是没有问题,查询表的话,可以得到正确的中文字符串 现在如果想要获取到在oracle中直接赋值中文字符串,就变成乱码了
fw0124 2013-02-18
  • 打赏
  • 举报
回复
us7ascii存中文会没有问题吗?
nwwygs 2013-02-18
  • 打赏
  • 举报
回复
引用 5 楼 ajo413 的回复:
引用 2 楼 nwwygs 的回复: 你用的是什么编辑器阿,PL/SQL吗? 如果是,调整一下里面是字体试试看。 Tool > Preferences > User Interface > Font 你把Editor,Grid里面的script改成CHINESE得。 参照下面的截图: 字符集里居然没有中文
你先把字体改成宋体,就会有中文字符集了。
睿智天成 2013-02-18
  • 打赏
  • 举报
回复
你确定服务器和客户端上面编码字符集是一样的都为american_america.us7ascii
ajo413 2013-02-18
  • 打赏
  • 举报
回复
引用 2 楼 nwwygs 的回复:
你用的是什么编辑器阿,PL/SQL吗?
如果是,调整一下里面是字体试试看。
Tool > Preferences > User Interface > Font
你把Editor,Grid里面的script改成CHINESE得。
参照下面的截图:


字符集里居然没有中文
ajo413 2013-02-18
  • 打赏
  • 举报
回复
引用 3 楼 Rexmax 的回复:
你试试通过在客户端添加用户环境变量NLS_LANG,值为AMERICAN_AMERICA.US7ASCII或者通过regedit修改注册表,找到ORACLE项,修改NLS_LANG值为AMERICAN_AMERICA.US7ASCII
注册表都修改了的~
睿智天成 2013-02-18
  • 打赏
  • 举报
回复
你试试通过在客户端添加用户环境变量NLS_LANG,值为AMERICAN_AMERICA.US7ASCII或者通过regedit修改注册表,找到ORACLE项,修改NLS_LANG值为AMERICAN_AMERICA.US7ASCII
nwwygs 2013-02-18
  • 打赏
  • 举报
回复
你用的是什么编辑器阿,PL/SQL吗?
如果是,调整一下里面是字体试试看。
Tool > Preferences > User Interface > Font
你把Editor,Grid里面的script改成CHINESE得。
参照下面的截图:

ajo413 2013-02-18
  • 打赏
  • 举报
回复
求求~~
多壮志 2013-02-18
  • 打赏
  • 举报
回复
引用 15 楼 cowboyhn 的回复:
如果创建存储过程的时候,客户端的字符集与数据库不一致,那么保存的存储过程就是乱码,检查下存储过程内容: SELECT DBMS_METADATA.GET_DDL('PROCEDURE','P_TEST1') FROM DUAL; 引用 楼主 ajo413 的回复:首先本机和服务器的字符集都为american_america.us7ascii 我用了一个存储过程,……
这真有可能。
cowboyhn 2013-02-18
  • 打赏
  • 举报
回复
如果创建存储过程的时候,客户端的字符集与数据库不一致,那么保存的存储过程就是乱码,检查下存储过程内容: SELECT DBMS_METADATA.GET_DDL('PROCEDURE','P_TEST1') FROM DUAL;
引用 楼主 ajo413 的回复:
首先本机和服务器的字符集都为american_america.us7ascii 我用了一个存储过程,使用游标返回值 1.在表A中存储有中文字段column1 open cs for select column1 from a ; 这样的语句,在程序中(asp.net)就可以正确获取到中文的字符 2.直接赋值中文 open cs for select '成功' from du……
nwwygs 2013-02-18
  • 打赏
  • 举报
回复
引用 10 楼 ajo413 的回复:
引用 7 楼 nwwygs 的回复: 引用 5 楼 ajo413 的回复:引用 2 楼 nwwygs 的回复: 你用的是什么编辑器阿,PL/SQL吗? 如果是,调整一下里面是字体试试看。 Tool > Preferences > User Interface > Font 你把Editor,Grid里面的script改成CHINESE得。 参照下面的截图: 字符集里居然没有中文……
要不然你就把本机和服务都改成中文字符集,我之前也出现过这种问题,那么改过就好用了的。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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