最近做信创项目使用的是达梦数据库,其中有一个大文本字段的数据读取出来后面部分是乱码。一开始以为是部分字符转义发生错误,研究错误起始部分发现并没不存在转义,而且隐约可见乱码部分包含源码的字符,而且数据较短时不会出现乱码,考虑是数据被截断造成的。
网上没有找到现成的解决办法,但发现一篇题为“odbc_fetch_array 上的 PHP 字符串限制”的文章,谈到可以在php.ini中设置odbc.defaultlrl值解决。想起配置达梦时直接复制了官网提供的默认参数,于是打开php.ini文件找到
dm.defaultlrl = 4096
其实官方在这里提供了说明,“对于各种变长数据类型,每列最大读取的字节数。”怪自己只是复制粘贴根本没看
改为
dm.defaultlrl =4096000
php可以处理2G长度的字符串,根据数据的需要设置为不超过2G字节即可。
设置完重启php-fpm,再刷新网页显示正常了。
评论
本文评论功能已关闭。