Symfoware的客户端转码

现在讨论的是Symfoware的ODBC,至于其它API是否这样,还不清楚。

Symfoware是支持客户端内码的,即Server端和Client端使用不同的内码时,可以指定由客户端来转换从Server端返回的消息。例如,Server端是UTF8格式,Client端是SJIS格式,默认情况下是Server端转码,这样Server端会把消息的内码自动转成Client能识别的SJIS格式,如果设置了CLI_CHARACTER_TANSLATE=(CLIENT)的DSN参数,Server就会把自己的UTF8内码格式的消息原封不动地返回给CLient,由Client进行处理。一般来说还有个参数CHAR_SET,可以在客户端指定转成什么类型的内码。

从外部功能来说,是这样的,但是实施起来,却不这么顺利。

下面采取这样的组合

Server         Client         消息内容

SJIS          SJIS           SJIS

SJIS          UTF8          SJIS

UTF8          SJIS          UTF8

UTF8          UTF8         UTF8

从结果上来看,还是取决于Server端内码,客户端转码没有生效,使用SQL_SNAP打开日志分析一下子,只是相关的标示为从80000000---->00000000,说明客户端转码的设置是被接受的,至于为什么不能实现客户端转码,就令人费解了。

我觉得,像这种环境类的设置,不外乎四个地方,

  1. 在MS的odbcad.exe里创建数据源时,添加参数CLI_CHARACTER_TANSLATE=(CLIENT)
  2. 在注册表odbc数据源.ini项,添加CLI_CHARACTER_TANSLATE之类的键值
  3. 在连接字符串中添加CLI_CHARACTER_TANSLATE参数
  4. 执行SQL 语句如“SET CLI_CHARACTER_TANSLATE ”之类,这个Symfoware会报错,MySQL到是支持

不管怎么试,总是解决不了问题,看来是个Bug!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值