关于Oracle导入中文乱码

UKnowImJin 2017-10-13 02:18:08
我这边用SQL Developer执行添加多张表,执行后却有几张表的数据出现乱码



请问这是什么原因造成的,已经尝试过设置环境变量,还是一样的结果
...全文
1109 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧水幽幽泉 2017-10-24
  • 打赏
  • 举报
回复
引用 13 楼 weixin_39391823 的回复:
已解决,谢谢大家了

如何解决的?
UKnowImJin 2017-10-24
  • 打赏
  • 举报
回复
已解决,谢谢大家了
minsic78 2017-10-13
  • 打赏
  • 举报
回复
引用 11 楼 minsic78 的回复:
如果你的数据库字符集是WE8ISO8859P1,那么其实是不能存储真正的中文的,因为它并非双字节字符集,如果数据库刚建立,没什么数据库,删掉重建吧,以后代价会小点。虽然无论什么样的字符集,都可以“显示”中文,但是并非真正的中文,在有些SQL中还可能出现你不想要的结果,比如like模糊匹配。 如果非要用这个字符集存中文,那么将客户端的NLS_LANG变量设置成:AMERICAN_AMERICA.WE8ISO8859P1 另:不要试图通过修改数据库字符集来完成整库数据的转换,来改成中文字符集,那样数据库就废了。
补充说明:即使客户端NLS_LANG变量设置成:AMERICAN_AMERICA.WE8ISO8859P1,你能显示中文,这个中文也不是真正的中文,上面提到的问题也一样存在,所以,最佳的选择就是重建数据库,选择能够保存中文的ZHS16GBK、AL32UTF8等字符集。
minsic78 2017-10-13
  • 打赏
  • 举报
回复
如果你的数据库字符集是WE8ISO8859P1,那么其实是不能存储真正的中文的,因为它并非双字节字符集,如果数据库刚建立,没什么数据库,删掉重建吧,以后代价会小点。虽然无论什么样的字符集,都可以“显示”中文,但是并非真正的中文,在有些SQL中还可能出现你不想要的结果,比如like模糊匹配。 如果非要用这个字符集存中文,那么将客户端的NLS_LANG变量设置成:AMERICAN_AMERICA.WE8ISO8859P1 另:不要试图通过修改数据库字符集来完成整库数据的转换,来改成中文字符集,那样数据库就废了。
碧水幽幽泉 2017-10-13
  • 打赏
  • 举报
回复
字符串集需要改下:set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
碧水幽幽泉 2017-10-13
  • 打赏
  • 举报
回复
引用 7 楼 qq646748739 的回复:
那你说的字符集WE8ISO8859P1是从哪里来的?

看到了。。。
UKnowImJin 2017-10-13
  • 打赏
  • 举报
回复
引用 7 楼 qq646748739 的回复:
那你说的字符集WE8ISO8859P1是从哪里来的?
执行select * from nls_database_parameters where PARAMETER='NLS_CHARACTERSET',出来的就是WE8ISO8859P1
碧水幽幽泉 2017-10-13
  • 打赏
  • 举报
回复
那你说的字符集WE8ISO8859P1是从哪里来的?
UKnowImJin 2017-10-13
  • 打赏
  • 举报
回复
引用 5 楼 qq646748739 的回复:
字符集WE8ISO8859P1
那估计是字符集的问题,字符集WE8ISO8859P1是可以存储汉字的。
你执行下面的SQL看下:

--查询服务端字符集
select * from nls_database_parameters;
--查询客户端字符集
select * from nls_instance_parameters



nls_database_parameters
nls_instance_parameters
碧水幽幽泉 2017-10-13
  • 打赏
  • 举报
回复
字符集WE8ISO8859P1
那估计是字符集的问题,字符集WE8ISO8859P1是可以存储汉字的。
你执行下面的SQL看下:

--查询服务端字符集
select * from nls_database_parameters;
--查询客户端字符集
select * from nls_instance_parameters
UKnowImJin 2017-10-13
  • 打赏
  • 举报
回复
引用 1 楼 minsic78 的回复:
1、PDE导的?还是SQL直接导的?或者调用imp导的? 2、数据库字符集是什么?select * from nls_database_parameters where PARAMETER='NLS_CHARACTERSET';结果给一个;plsql跑在什么操作系统上?中文windows吗?
SQL直接导的 字符集WE8ISO8859P1 plsql跑中文win10上
碧水幽幽泉 2017-10-13
  • 打赏
  • 举报
回复
查看下数据库服务端和客户端数据集是否一致,是否为GBK或UTF-8
碧水幽幽泉 2017-10-13
  • 打赏
  • 举报
回复
查看下数据库服务集,两者要一张才行。

--查询服务端字符集
select * from nls_database_parameters;
--查询客户端字符集
select * from nls_instance_parameters;
minsic78 2017-10-13
  • 打赏
  • 举报
回复
1、PDE导的?还是SQL直接导的?或者调用imp导的? 2、数据库字符集是什么?select * from nls_database_parameters where PARAMETER='NLS_CHARACTERSET';结果给一个;plsql跑在什么操作系统上?中文windows吗?

17,377

社区成员

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

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