首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl TDS字符集

Perl TDS字符集
EN

Server Fault用户
提问于 2010-05-04 21:24:40
回答 2查看 4.5K关注 0票数 7

我正在使用DBD::Sybase的FreeTDS驱动程序,连接到MS。当我查询某些记录的某些值时,会得到以下错误:

代码语言:javascript
复制
DBD::Sybase::st fetchrow_arrayref failed: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (9) NUMBER = (99)
Server , database 
Message String: WARNING! Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?').

这种情况似乎发生在包含特殊Windows字符集字符的记录中,例如从用户的Outlook和Word消息中复制和粘贴的卷曲引号。

不幸的是,我对这个数据库没有任何控制;在输入的过程中清除输入显然是可行的,但我无法使用。

我需要更改哪些FreeTDS设置才能成功地查询这些记录?

其他信息:

从tsql可以很好地执行查询。我只通过Perl的DBD::Sybase接口获得此错误。(我应该测试其他的东西吗?我还不具备安装PHP或Python的专业知识。我有jTDS,可以使用它,但我认为这是一个完全不同的实现,而不是FreeTDS的接口。)

添加

代码语言:javascript
复制
client charset = UTF-8

我的freetds.conf文件的结果是“内存不足!”打印到STDERR。

EN

回答 2

Server Fault用户

发布于 2010-05-05 00:01:20

我最近也遇到了类似的问题。

在您的freetds.conf文件中,您需要一个类似于以下内容的条目:

代码语言:javascript
复制
[DataSourceName]
        host = <IP Address>
        port = <databaseport>
        #version 8.0 seems to work  with sql server 2005
        tds version = 8.0
        client charset = UTF-8

客户字符集是这里的重要部分。

我是用Linux中的Perl做的,考虑到Perl是客户端,我希望UTF-8也是最好的选择。

票数 3
EN

Server Fault用户

发布于 2010-05-04 23:47:56

检查这是否有帮助(来自Sybase手册,但也可以在MSSQL上工作):

在会话期间控制字符转换

set char_convert允许用户决定在特定工作会话期间字符集转换的操作方式。使用set char_convert:*设置字符集转换on或off *开始转换为特定字符集*打开或关闭set char_convert的语法转到错误报告: set char_convert {off {on 带有{error =带有}} charset 带有{error =带有}}

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/141088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档