Windows11 sqlplus中文乱码问题

查看服务端字符集:

img

依照内容形式,添加环境变量:

img

img

查看客户端、会话中的字符集:

img

img

注册表:

img

还是乱码:

img

在oracle数据库中,任何以select形式查到的字符集,都是客户端字符集,用select是查不到服务端字符集的(网上很多文章都是错的)。
对于oracle数据库而言,查询显示乱码,是由于客户端字符集和代码页字符集不一致导致的,与服务端字符集关系不大。
在你这个例子里,客户端字符集在环境变量中配置,代码页字符集即为cmd窗口的字符集,可以通过输入chcp 936切换成gbk,或者输入chcp 65001切换成utf8,之后再连接数据库操作。
建议你把环境变量NLS_LANG改成

SIMPLIFIED CHINESE_CHINA.AL32UTF8

然后打开cmd,输入chcp 65001回车,再连接数据库执行查询。
另外,如果数据本身就已经是乱码进的数据库,你怎么改设置也还会是乱码,这种情况需要进行对数据进行转码处理了。

更多与oracle字符集的介绍,可以参考我这篇文章

【ORACLE】谈一谈Oracle数据库使用的字符集,不仅仅是乱码_DarkAthena的博客-CSDN博客_oracle数据库默认字符集 一、前言先看一个比较有意思的案例上面这个sql,查询了a和b两个字段,均为"张三"两个汉字,并且使用length函数检查,长度均为2。但是,当你看到下面这几个sql的输出结果时,很有可能第一反应是:"这特喵的怎么可能?"其实,你所看到的两个"张三",的确长得是一模一样,用显微镜去看也不可能看到区别。但为什么a和b不相等呢?这是因为组成他们的成分不一样,这个成分就是 字符集二、什么是字符集?百度百科简单来说,字符(Character)是各种文字和符号的总称,包括各国家文字、标 https://darkathena.blog.csdn.net/article/details/122659532?spm=1001.2014.3001.5502