用vc操作oracle时遇到字符集的问题!!!!!!!!

freespider 2002-01-12 11:31:07
服务端oracle8.17, 字符集为AMERICAN_AMERICA.US7ASCII
客户端oracle8.17, 字符集为AMERICAN_AMERICA.US7ASCII
用sqlplus读取、写入中文都正常,
用vc调用odbc 的api时读取正常,写入时也不报告错误,但写进数据库的都是问号,
如果服务端和客户端的字符集都是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,就没有问题,请问该怎么办?
vc中代码如下:
CString strSql;
strSql = "Insert into table1";
strSql += "(title) Values(";
strSql += "'标题'";
strSql += ")";

if (SQL_SUCCESS == SQLExecDirect(m_sqlHstmt,
(unsigned char *) strSql.operator LPCTSTR(), SQL_NTS))
{
return 0;
}
如果能更该客户端字符集的设置,或在vc代码中增加字符集设置能解决该问题就好了,不然要更该很多代码,太痛苦了,望高手给予解决!!!!
...全文
68 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
freespider 2002-01-16
没有办法,我只有更改了很多代码,解决了这个问题。

我痛恨oracle
  • 打赏
  • 举报
回复
freespider 2002-01-13
我试过了,有一台机器,客户端是8。05,注册表中设置如下:
oracle: nls_long: AMERICAN_AMERICA.US7ASCII
all_homes:id0: nls_long : AMERICAN_AMERICA.WE8ISO8859P1
id1: nls_long : NA
HOME0: NLS_LONG : AMERICAN_AMERICA.WE8ISO8859P1
HOME1: NLS_LONG : NA

使用一直正常,但自从转到8。17客户端上去后,就出问题了,我首先想到的是将8。17的客户端的设置修改为和8。05上的一样,但修改后连sql_plus连接数据库都失败了。
  • 打赏
  • 举报
回复
hujun614 2002-01-13
AMERICAN_AMERICA.WE8ISO8859P1
那你用iso8859-1这种字符集试试,应该能行了。
  • 打赏
  • 举报
回复
Soft21 2002-01-13
大家好啊,看来,我在等待大家的答案,呵呵!
  • 打赏
  • 举报
回复
hujun614 2002-01-12
可以直接改注册表。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下
NLS_LANG 的值改了就行了。 最好先保存,如果不是中文,先改为中文,退出进再还原成原来的就行了。

进入时改成SIMPLIFIED CHINESE_CHINA.ZHS16GBK
退出时改成原来的语言集就OK了。
  • 打赏
  • 举报
回复
freespider 2002-01-12
如果在客户端更该字符集为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
别说vc+odbc api,
就连sqlplus操作起来都是乱字符。
  • 打赏
  • 举报
回复
相关推荐
发帖
Sybase
加入

2589

社区成员

Sybase相关技术讨论区
社区管理员
  • Sybase社区
申请成为版主
帖子事件
创建了帖子
2002-01-12 11:31
社区公告
暂无公告