oracle存储时中文乱码

你看见了吗° 2017-10-12 12:31:27
部署项目,环境是win8,数据库字符集:ZHS16GBK,环境变量也是设置的也是,直接数据库插入语句没有问题,打开页面读取也没问题,但是从页面保存时,就会出现乱码,求大神指点下具体是哪里出问题了
...全文
643 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧水幽幽泉 2017-10-12
  • 打赏
  • 举报
回复
引用 2 楼 a229397620的回复:
有大神嘛
你不看时间点么?这都到饭点了,别人大多吃饭睡觉去了,14点上班。
碧水幽幽泉 2017-10-12
  • 打赏
  • 举报
回复
引用 3 楼 a229397620的回复:
看来要准备一个小号,专门给自己回帖拿分了
你这种用小号拿分的思想不赞成。
你看见了吗° 2017-10-12
  • 打赏
  • 举报
回复

注册管理打开查看也是zhs16gbk
你看见了吗° 2017-10-12
  • 打赏
  • 举报
回复
引用 12 楼 qq646748739 的回复:
那就是前端的问题了,数据库也处理不了。
还是谢谢了,,我去java拿问问,找了许久才找出问题在哪里
碧水幽幽泉 2017-10-12
  • 打赏
  • 举报
回复
引用 13 楼 a229397620 的回复:
引用 12 楼 qq646748739 的回复:
那就是前端的问题了,数据库也处理不了。
还是谢谢了,,我去java拿问问,找了许久才找出问题在哪里

不客气~
碧水幽幽泉 2017-10-12
  • 打赏
  • 举报
回复
那就是前端的问题了,数据库也处理不了。
你看见了吗° 2017-10-12
  • 打赏
  • 举报
回复
引用 10 楼 qq646748739 的回复:

--查询服务端字符集
select * from nls_database_parameters;
--查询客户端字符集
select * from nls_instance_parameters;
是前端传到后端就乱码了,所以保存进数据库才是乱码
碧水幽幽泉 2017-10-12
  • 打赏
  • 举报
回复

--查询服务端字符集
select * from nls_database_parameters;
--查询客户端字符集
select * from nls_instance_parameters;
你看见了吗° 2017-10-12
  • 打赏
  • 举报
回复
有老司机上班了吗,开车带带我啊~
你看见了吗° 2017-10-12
  • 打赏
  • 举报
回复
引用 6 楼 qq646748739 的回复:
回到话题来,你客户端和服务端的字符集都是:ZHS16GBK吗?
部署时用的是apache tomcat,两个tomcat,一个部署java代码,一个是平台封装代码,,java代码放到eclipse运行是不会的,放到tomcat就出现了保存中文乱码
碧水幽幽泉 2017-10-12
  • 打赏
  • 举报
回复
回到话题来,你客户端和服务端的字符集都是:ZHS16GBK吗?
你看见了吗° 2017-10-12
  • 打赏
  • 举报
回复
看来要准备一个小号,专门给自己回帖拿分了
你看见了吗° 2017-10-12
  • 打赏
  • 举报
回复
有大神嘛
你看见了吗° 2017-10-12
  • 打赏
  • 举报
回复
引用 6 楼 qq646748739 的回复:
回到话题来,你客户端和服务端的字符集都是:ZHS16GBK吗?
额,select userenv('language') from dual;这个查出来的,环境变量,以及注册表里的都是ZHS16GBK;这是服务端看的,客户端这个怎么看?
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库,不考虑清楚,随意选择一个默认的字符集,如WE8ISO8859P1或US7ASCII,而这两个字符集都没有汉字编码,虽然有些候选用这种字符集好象也能正常使用,但用这种字符集存储汉字信息从原则上说就是错误的,它会给数据库的使用与维护带来一系列的麻烦。正常情况下,要将汉字存入数据库,数据库字符集必须支持中文,而将数据库字符集设置为US7ASCII等单字节字符集是不合适的。US7ASCII字符集只定义了128个符号,并不支持汉字。另外,如果在SQL*PLUS中能够输入中文,操作系统缺省应该是支持中文的,但如果在NLS_LANG中的字符集设置为US7ASCII,显然也是不正确的,它没有反映客户端的实际情况。但在实际应用中汉字显示却是正确的,这主要是因为Oracle检查数据库与客户端的字符集设置是同样的,那么数据在客户与数据库之间的存取过程中将不发生任何转换,但是这实际上导致了数据库标识的字符集与实际存入的内容是不相符的。而在SELECT的过程中,Oracle同样检查发现数据库与客户端的字符集设置是相同的,所以它也将存入的内容原封不动地传送到客户端,而客户端操作系统识别出这是汉字编码所以能够正确显示。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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