首先,你的Sql Server版本。6.5 SP4 还是 7
1.注意你的Sql Servre中的语言集,最好装成936(中文),缺省好像是西欧语言集
如果不是936,嘿嘿,你比较悲惨,但不是没有办法
一、在Enterprise Manager中,右键点Sql Server,选属性,再找第二个tab(名字忘了),找到ansi->oem,如果打钩就去掉,如果没打钩就打钩。
二、如果你使用ODBC连,再查找ODBC数据源中的相应DSN,找属性,看ansi->oem.
三、你在vb中使用sql语句直接操作,还是使用addnew、update等ado方法,直接使用sql语言好像可以,这关系到sql server中打开数据源的方式,是直接打开,还是使用cursor_open
1.注意你的Sql Servre中的语言集,最好装成936(中文),缺省好像是西欧语言集
如果不是936,嘿嘿,你比较悲惨,但不是没有办法
一、在Enterprise Manager中,右键点Sql Server,选属性,再找第二个tab(名字忘了),找到ansi->oem,如果打钩就去掉,如果没打钩就打钩。
二、如果你使用ODBC连,再查找ODBC数据源中的相应DSN,找属性,看ansi->oem.
三、你在vb中使用sql语句直接操作,还是使用addnew、update等ado方法,直接使用sql语言好像可以,这关系到sql server中打开数据源的方式,是直接打开,还是使用cursor_open
sqlh=sqlconnect('RSM','sa','')
mm=sqle(sqlh,'insert into ......') 都可正确处理汉字。
VB6的DAO3.5时也能正确处理汉字(但3。6就不行了),第一次执行ADO的ADDNEW,UPDATE 时也能正确处理,但第二次就错了,之后也不行(全部把表中的资料删除后第一次可以,之后不行)。 用ADO、RDO的SQL语句操作时,都不能正确处理。我的头都大了,到微软技术支持,他们也没能放出个“响”屁!
帮我这个忙,我给你们200分都行!
所属类别: Visual Basic-数据库编号:QA002096
建立日期: 1999年11月25日 最后修改日期:2000年5月14日 wxh:
操 作 系 统 : win98
工 具 : vb6.0
问 题 : 我 在 vb中 利 用 ado控 件 访 问 多 台 远 程 服 务 器 SQLServer数 据 库 , 发 现 从 其 中 个 别 服 务 器 取 来 的 数 据 中 汉 字 信 息 全 部 是 乱 码 , 不 知 原 因 何 在 ? 是 vb的 问 题 还 是 SQLServer的 问 题 ? 请 帮 忙 解 决 , 谢 谢 ! 回答: Richard的 意 见 :
我 以 前 也 碰 到 过 ,是 由 于 各 SQL Server 安 装 时 选 择 的 语 言 不 一 致 引 起 !请 重 新 Setup 试 一 试 !
JunW的 意 见 :
应 该 是 SQL Server的 版 本 不 兼 容 引 起 的 ,我 曾 经 试 过 ,服 务 器 用 6.5,后 来 装 了 office2000后 ,读 出 数 据 全 乱 了 ,我 的 解 决 方 法 是 将 Sql 6.5的 客 户 端 在 客 户 机 上 Setup一 下 或 将 6.5版 本 的 sqlsvr32.dll 拷 到 客 户 机 上 windos\system目 录 下 覆 盖 原 有 的 文 件 即 可 。
Karter的 意 见 :
应 该 是 数 据 传 送 时 屏 蔽 了 高 位 , 据 说 使 用 VB6 的 SP2就 没 事 ( 不 要 SP3 ) , 或 者 换 一 下 ODBC 的 驱 动 程 序 。
Ariel的 意 见 :
根 据 前 提 的 不 同 , 乱 码 的 出 现 存 在 两 种 情 况 ,
1、 SQL SERVER V6.5
正 象 Karter所 说 , 与 VB的 SP有 关 。 SQL SERVER与 应 用 程 序 中 有 个 接 口 , 如 果 你 的 VB用 的 ADO是 V2, 则 它 的 ODBC接 口 与 SQL方 相 同 , 但 如 果 你 装 了 SP3, 则 ADO升 为 V2.1, 与 SQL的 接 口 驱 动 程 序 想 比 , 版 本 更 高 , 导 致 VB与 SQL处 理 不 同 , 从 而 产 生 乱 码 。 解 决 方 法 : 或 者 你 在 CLIENT方 装 更 新 版 本 的 ODBC, 或 者 升 级 SQL SERVER。 还 有 一 个 方 法 可 以 试 试 : 利 用 OFFICE97光 盘 中 的 有 关 文 件 , 在 该 CD上 的 VALUEPACK目 录 下 , 将 ODBC*.DLL( 应 有 4个 ) 复 制 到 WINDOWS的 SYSTEM目 录 下 , 即 可 。 但 我 只 做 初 步 试 验 , 不 敢 保 证 一 点 没 有 其 它 问 题 会 发 生 。
2、 SQL SERVER V7.0
在 SQL 7中 有 一 项 自 动 翻 译 选 项 , 它 无 法 识 别 类 似 中 文 的 双 字 节 信 息 ( 不 包 括 UNICODE字 符 ) , 因 此 必 须 将 该 选 项 DISABLE, 除 非 SQL SERVER在 安 装 时 即 已 选 择 中 文 字 符 集 。
杨 威 利 的 意 见 :
我 在 WINDOWS 3.1下 读 取 库 时 也 遇 到 过 这 种 情 况 , 原 因 为 SQL服 务 器 客 户 端 的 字 符 集 被 设 为 ISO_1而 非 通 常 的 CP850可 以 检 查 一 下 该 配 置 。
罗 波 的 意 见 :
ADO采 用 如 下 联 接 方 式 :
cn.Open "Provider = SQLOLEDB; Data Source= " & SQLServerName & "; Auto Translate=false; User Id=" & SQLUserName & ";Password=" & SQLUserPass & ";"
注 意 其 中 : Auto Translate=false; 你 不 妨 试 一 试 。
Navy_Chen的 意 见 :
本 人 曾 碰 到 类 似 情 况 ,vb5 使 用 SQL7.0的 ODBC驱 动 ,连 接 SQL6.5 数 据 库 。 若 将 Perform translation for charcter data (执 行 字 符 串 转 换 )属 性 设 为 Enabled (或 选 中 ),则 出 现 中 文 变 为 乱 码 情 况 。 在 odbc中 设 置 该 属 性 即 可 。
lg的 意 见 :
我 想 上 面 的 人 已 经 解 释 了 很 多 , 我 比 较 认 同 的 是 sp问 题 和 office2000的 问 题 。 因 为 我 装 Win98第 一 版 和 vb6(无 sp)就 不 出 先 乱 码 。 如 果 安 装 其 他 新 版 软 件 再 看 他 出 现 什 么 问 题 。 此问题由Richard等回答。