oracle9i里,我无法insert进去中文 插入记录后中文就变成了乱码。(无论是用程序还是用oracle客户端编辑工具都是一样)我是oracle新手,谢谢帮助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 server是在linux上,客户端在windows2003上。谢谢你 若是windows平台的数据库中执行:SELECT * FROM V$NLS_PARAMETERS;將客户端注冊表ORACLE中﹐NLS_LANG的值改成先前查找出的NLS_LANGUAGE.NLS_CHARACTERSET 就是说server端和客户端的字符集必须一致,才不会有乱码 我怎么在linux上看oracle是用的什么字符集呀,能不能给出命令行? 首先需要确定你的Oracle的字符集是什么,如果你的Oracle的字符集不支持中文,以后显示的时候会乱码.在Java中的解决办法:将中文转码成ISO再保存,显示时再从ISO转成GBK,就不会有问题了. 转码的java方法如下: public static String ISO2GB(String isoStr) { if (isoStr == null) return null; String gbStr = ""; try { gbStr = new String(isoStr.getBytes("ISO_8859_1"), "GBK"); } catch(Exception e) { System.out.println(e); } return gbStr; } public static String GB2ISO(String gbStr) { if (gbStr == null) return null; String isoStr = ""; try { isoStr = new String(gbStr.getBytes("GBK"), "ISO_8859_1"); } catch(Exception e) { System.out.println(e); } return isoStr; } 我运行SELECT * FROM V$NLS_PARAMETERS;之后显示:NLS_LANGUAGE=SIMPLIFIED CHINESENLS_CHARACTERSET=WE8ISO8859P1(我感觉这两个就鸲了吧)下来怎么办? 如果要在Oracle客户端中显示中文,需要将Client的字符集设置成Server(数据库的字符集不是系统的字符集)端的字符集或者Server端字符集的子集.具体做法参考tgm78的方案. 在你的客户端注冊表ORACLE中﹐NLS_LANG的值改成WE8ISO8859P1即可 在windows的注册表(regedit) 中搜索NLS_LANG键,更改键值为:WE8ISO8859P1 我把oracle里的nls_lang的值改成“WE8ISO8859P1”了,(并重启了客户端)还是不行呀? 我最主要的还是程序无法插入中文,先用客户端insert是想确定乱码不是由于程序造成的。是不是server的配置问题呀? 现在客户端可以显示中文嘛?你的这个问题估计是要重新安装oracle了,安装的时候选择语言的时候,选择:AMERICAN_AMERICA.ZHS16GBK 我把regedit里的所有nls_lang的值都变成了“WE8ISO8859P1”,现在客户端都进不去了,它说:“invalid or unknow NLS parameter value specified” 如何取sysdate之前几个小时的时间 批量插入的多个select怎么写 oracle 客户端问题 ORACLE 9i安装问题 怎样根据表名返回该表已经建立了主键约束并删除它? 大力兄,进来帮忙啊,任务和存储过程如何发布??? 数据比较问题 送分问题,Oracle的初始化登陆的用户名,密码和主机字符串 sql Develper 是个什么东东啊?它与Sqlplus 有什么关系没有啊? Oracle 9i服务器端可以在win2000专业版装吗 请问怎么统计varchar字段中某个单词或字的个数 在Oracel中怎么用T-SQL语句的到一个视图的所有字段?
SELECT * FROM V$NLS_PARAMETERS;
將客户端注冊表ORACLE中﹐NLS_LANG的值改成先前查找出的NLS_LANGUAGE.NLS_CHARACTERSET
在Java中的解决办法:
将中文转码成ISO再保存,显示时再从ISO转成GBK,就不会有问题了. 转码的java方法如下:
public static String ISO2GB(String isoStr)
{
if (isoStr == null)
return null; String gbStr = "";
try
{
gbStr = new String(isoStr.getBytes("ISO_8859_1"), "GBK");
}
catch(Exception e)
{
System.out.println(e);
}
return gbStr;
}
public static String GB2ISO(String gbStr)
{
if (gbStr == null)
return null; String isoStr = "";
try
{
isoStr = new String(gbStr.getBytes("GBK"), "ISO_8859_1");
}
catch(Exception e)
{
System.out.println(e);
}
return isoStr;
}
NLS_CHARACTERSET=WE8ISO8859P1
(我感觉这两个就鸲了吧)
下来怎么办?
即可
你的这个问题估计是要重新安装oracle了,安装的时候选择语言的时候,选择:AMERICAN_AMERICA.ZHS16GBK