暂无图片
oracle12g存入的表数据存在乱码情况,各项编码配置都已是utf-8?
我来答
分享
喵喵娜戈呜
2022-01-14
oracle12g存入的表数据存在乱码情况,各项编码配置都已是utf-8?

系统环境是windows server 2008,环境变量跟数据库一致,但是表里存入的字段是这种格式的乱码,后台web打断点看了解析的数据是中文
QQ图片20220114103338.png

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
严少安
暂无图片

也可能是原始数据导入的时候某个环节的字符集是gbk?

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena

不是改UTF8就解决乱码了,重要的是字符集环境和数据要匹配,你先试下查询的时候转码,看看能不能解析出来,看看这个数据的字符集到底是个啥

select CONVERT(字段名, 'ZHS16GBK', 'AL32UTF8') from 表; select CONVERT(字段名, 'AL32UTF8', 'ZHS16GBK') from 表;
复制

还有看看这个十六进制数据,分析下这几个字的字符集是啥

select utl_raw.cast_to_raw(字段名) from 表名
复制

再查个东西

select * from nls_session_parameters
复制

userenv 的language是数据库的字符集,不是会话的字符集

select utl_i18n.raw_to_char( UTL_I18N.string_to_raw('涓嬶級','ZHS16GBK'),'AL32UTF8') from dual
复制

image.png

暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

原则上,和DB端字符集设置无关。一句话:NLS_LANG里的NLS_CHARCTERSET的设置,可以和DB端的NLS_CHARCTERSET不一致(因为与DB端交互时,系统会自动做字符集转换),但必须和OS的NLS_CHARCTERSET项一致,否则便会乱码。

连接DB的客户端,应该是WINDOWS。那么看这台WINDOWS在OS层面的NLS_LANG设置和环境变量里的NLS_LANG设置,是否一致就可以了。

Windows下,cmd窗口运行set NLS_LANG查看环境变量值,或者到注册表里查询NLS_LANG这一项的内容。这是环境变量设置。

Windows: cmd窗口敲chcp命令,得到字符集代码
例如:
C:\Users\Administrator>chcp
活动代码页: 936
代码936代表 中国 - 简体中文(GB2312)

查下OS层面的设置,和NLS_LANG环境变量是否一致。应该就是因为不一致,造成的乱码。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle支持几种类型的LOB?
回答 1
已采纳
Oracle支持4种类型的LOB,即CLOB、NCLOB、BLOB和BFILE。CLOB:字符LOB。这种类型用于存储大量的文本信息,如XML或纯文本。这个数据类型会受到字符集转换的影响。也就是说,在
安装oracle dg,是不是可以在11g的基础上进行配置主从?
回答 1
已采纳
11g可以搭建DG的呀,这个没问题。
Oracle可以非图型界面安装吗?
回答 3
已采纳
可以的启动实例到nomount;执行如下命令手工建库CREATEDATABASEmynewdbUSERSYSIDENTIFIEDBYsyspasswordUSERSYSTEMIDENTIFIEDBYs
Oracle登录卡住的问题有没有大佬遇到过?
回答 4
已采纳
ping目标主机看看网络连通性telnet目标主机1521,看看1521端口连通性到oracle主机上,看看有没有磁盘空间满?主机load和cpu怎么样?如果没权限,就找dba😄️
oracle/mysql添加索引会导致锁吗?
回答 2
已采纳
全表排序会锁的。但是oracle可以在createinde 。。。。。。。最后加上online的关键字,基本不影响使用。
AWR分析报告问题求助:如何去优化
回答 2
感谢大佬我研究一下
服务器扩容可能有什么风险?
回答 1
1、这是2个问题,同时2个问题之间的关联性本身不大的;2、CBC等待事件:latch:cachebufferschainsA、热点块、SQL语句性能问题、OracleBug都有可能导致CBC等待;B、
Oracle数据库序列,编辑查看下一个值是21,但是通过sql语句nextval查看却是6,这是什么原因?
回答 5
序列本来就可能多个会话在同时调用,每调用一次值就放大一个数,所以这个情况很正常。
imp dmp后表还是原来的表空间吗,假如新环境有和原来dmp文件表空间同名的表空间可有影响?
回答 5
直接打开备份的sql文件改下表空间名
Oracle创建表分区后,查询的时候不给出partition,但是会给分区字段指定的值,会不会自动按照分区查询?
回答 1
已采纳
会:例:数据准备:CREATETABLEt1(idnumber,CDNUMBER(8)NOTNULL)PARTITIONBYRANGE(CD)(PARTITIONt1RANGE10VALUESLESS