微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – Perl TDS字符集

我正在使用带有DBD :: Sybase的FreeTDS驱动程序,连接到MS sql Server.当我查询某些记录的某些值时,我收到此错误
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的接口.)

添加

client charset = UTF-8

到我的freetds.conf文件导致“内存不足!”印到STDERR.

解决方法

我最近遇到了类似的问题.

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

[DataSourceName]
        host = <IP Address>
        port = <databaseport>
        #version 8.0 seems to work  with sql server 2005
        tds version = 8.0
        client charset = UTF-8

客户端charset在这里是重要的一点.

我在Linux上用Perl做这个,我希望UTF-8也是最好的选择,因为Perl是客户端

原文地址:https://www.jb51.cc/mssql/81142.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐