美文网首页自动化监控ZabbixZABBIX
Zabbix通过odbc访问oracle结果集中文返回乱码的问题

Zabbix通过odbc访问oracle结果集中文返回乱码的问题

作者: 阿乐_822e | 来源:发表于2019-10-08 16:41 被阅读0次

通过ODBC方式监控数据库,如果返回结果是全英文就很正常,但这次发现如果结果集中有中文,就会出现乱码。
查了网上的解释,说是要设置NLS_LANG变量,方法为先查询数据库编码方式(我用的是mysql):


1.jpg

在环境中设置一下(注意编码的书写并不完全一样!)


2.jpg

之后以sqlplus登录查询发现确实是可以正确返回中文了。
但是在ODBC中要怎么设置环境变量呢?经过查询unixOdbc的官网,终于找到了为unixodbc设置环境变量的方法
参考:https://www.easysoft.com/developer/interfaces/odbc/linux.html#app_a

3.png

这里说得很清楚,这个项要添加到odbc.ini文件中


4.png

特别要注意地是,一开始在设置DMEnvAttr的NLS_LANG属性时,由于担心空格影响到它的赋值,特地为后面的值加上了引号,结果却引起ora12705错误::Cannot access NLS data…
后面仔细查看上面的参考文档,发现这样一句:


5.png

注意看这里:


6.png

很明显,即使属性值中有空格,赋值时也是不需要前后加引号的,加了反而出错!

同时,在使用过程中也发现一个小小的遗憾:当我们的查询语句中含有中文时,传送到服务端似乎还是会乱码(引起查询结果状态不明确),只要查询语句中没有中文,结果集中有中文,再传送到客户端是没有问题的!到底是什么原因,有时间再详查了。

相关文章

网友评论

    本文标题:Zabbix通过odbc访问oracle结果集中文返回乱码的问题

    本文链接:https://www.haomeiwen.com/subject/xkobpctx.html