pymssql查询结果中文乱码处理

前言

我在使用pymssql的遇到了2个问题
问题1:sql语句打印出来在数据库能查到数据,但在pymssql查不出来
问题2:能查出来呢!却又是这样的乱码:2019´¨0106Ãñ³õ4846Ô­¸æ:°×ÁÖ¡¢±»¸æ:LUSHA ZHANG
然后,就是各种百度乱七八糟的帖子翻了不少,最后看到这哥们的博客。

导致乱码的原因

sql语句sql语句里写得太复杂。比如:有使用多表联查,字段拼接

解决方案

乱码的地方加上.encode(‘latin1’).decode(‘gbk’),先编码成SQL server支持的编码格式,再解码成中文。

正确的姿势

        my_sql = "select a.id,CAST(b.nh as varchar)+CAST(b.fyjc as varchar)+CAST(b.az as varchar)+CAST(b.hs as varchar)+CAST(b.dsr as varchar) as my_ah from tasks as a left join transfer.dbo.g_ajz as b on a.anjian_id = b.number where a.TaskName = '" + \
            Entry_hs.get()+"' and a.Faguan like '%"+Entry_cbr.get()+"%'"
    print(my_sql)
    # 创建数据库链接
    connect = pymssql.connect('地址', 'sa', '*****',
                              'database', charset='utf8')  # 服务器名,账户,密码,数据库名
    if connect:
        print("连接成功!")
    cursor = connect.cursor()  # 创建一个游标对象,python里的sql语句都要通过cursor来执行
    cursor.execute(my_sql)  # 执行sql语句
    # print(cursor.fetchall())
    for item in iter(cursor.fetchall()):
        print(item[1].encode('latin1').decode('gbk'))
    # 关闭链接
    cursor.close()
    connect.close()

参考:

pymssql读取varchar字段中文显示乱码的问题分析

广告

如有定制爬虫需求请联系:1109765190@qq.com

引用和中提到了解决pymssql汉字乱码问题的方法。首先,需要在连接数据库时指定正确的字符集,如UTF-8或CP936。可以通过设置`charset`参数来完成,例如`charset='utf8'`或`charset='cp936'`。其次,在执行查询时,需要对查询语句进行编码转换,以确保正确显示中文结果。可以使用`encode`函数将查询语句编码成相应的字符集,如`inquiry1.encode('cp936')`。在打印查询结果时,也需要使用正确的字符集进行解码,以显示正确的中文字符。以上方法经过前辈们的测试和实践,可行性已经得到了验证。希望这些方法能帮助你解决pymssql中文乱码问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [pymssql中文乱码问题的解决方案](https://blog.csdn.net/qq_43103778/article/details/106862549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [pymssql 出现中文乱码的解决方法](https://blog.csdn.net/S_Masons/article/details/115345410)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值