金蝶K3数据库,数据编码检测是GBK
其中一个规格字段中含有直径符号Φ
这时候使用9.2作为查询条件是可以正常显示的,换符号查询就无法查询了。
这个符号并不是sql自定义的特殊符号,其实μ ,Ω 都无法查询到任何信息。
使用sqlserver 查询命令测试是可以直接查询的。
到此,看了很多文章,总觉得应该是编码问题,就是不知道该怎么处理,请会的人指个方向。
金蝶K3数据库,数据编码检测是GBK
其中一个规格字段中含有直径符号Φ
这时候使用9.2作为查询条件是可以正常显示的,换符号查询就无法查询了。
这个符号并不是sql自定义的特殊符号,其实μ ,Ω 都无法查询到任何信息。
使用sqlserver 查询命令测试是可以直接查询的。
到此,看了很多文章,总觉得应该是编码问题,就是不知道该怎么处理,请会的人指个方向。
你说的DEBUG模式,我一直没有找到,也不知道怎么弄。但是根据你的提示,我觉得Φ,这个符号既然无法在GBK字符集下正确的传入SQL servers,我就直接取消了charset选项,结果可以查询,返回的结果都是乱码。那只能想办法解决返回的结果了.
只能忽略转换的错误了,但是符号也无法显示了,请高手再支个招。
在水木中找到答案
http://stackoverflow.com/ques...
总之就是这库处理编码有bug
输入sql语句用unicode没问题,输出值会变成一个挂着unicode名义的byte string
先用latin1编码成byte string再gbk decode就行
另外后来试了一下用pyodbc连mssql没这破问题
3 回答3.2k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
3 回答1.8k 阅读
1 回答1.5k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
pymssql/src/_mssql.pyx第27行
DEF PYMSSQL_DEBUG = 1
设置为调试模式,打印出实际的sql语句第1212行
query_string_bytes = ensure_bytes(query_string, self.charset) # For Python 3, we need to convert unicode to byte strings
看看1215行输出的log你的Φ字符变成什么了我估计是这个问题self.charset可能是'utf-8' 先看看你的输出吧