鱼C论坛

 找回密码
 立即注册
查看: 2026|回复: 6

[已解决]python中 列表编码转换求助

[复制链接]
发表于 2020-1-10 11:51:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


默认用的编码是utf-8


但是列表怎么转成 GBK编码。
最佳答案
2020-1-10 15:15:14
本帖最后由 jackz007 于 2020-1-10 15:17 编辑
maxliu06 发表于 2020-1-10 14:43
如果的结果是很多的呢,怎么办?  
比如 我现在是查询一个表格, 出来的结果N多个行的。  


      那恐怕在指令传出前,需要把它 encode() 到 UTF-8,对所有接收到的文本内容都得按 UTF-8 decode() 才行。你应该不是头一个遇到此问题的人,业内肯定会有非常成熟的解决方案,在网上查一下或向数据库的大牛咨询一下呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-10 12:29:05 | 显示全部楼层
本帖最后由 jackz007 于 2020-1-10 12:41 编辑

        列表和 UTF-8、GBK 编码有什么必然联系?把你的样例展示出来。
        str1 = '鱼C论坛'
        编码:
        str1_UTF8 = str1 . encode("UTF-8")
        str1_GBK  = str1 . encode("GBK")
        解码:
        str = str1_UTF8 . decode("UTF-8" , "strict")
        str = str1_GBK  . decode("GBK" , "strict")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-10 14:05:51 | 显示全部楼层
jackz007 发表于 2020-1-10 12:29
列表和 UTF-8、GBK 编码有什么必然联系?把你的样例展示出来。

        编码:
# encoding : utf-8
list1 = [ ('李白','床前明月光'),('李清照','鱼C论坛'),('GDSMAD02154','0123548')]

print(list1)


我是操作数据库,  输出的结果是含 中文的列表, 然后导致输出是乱码。。

帮帮忙


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-10 14:16:33 | 显示全部楼层
本帖最后由 jackz007 于 2020-1-10 14:22 编辑
maxliu06 发表于 2020-1-10 14:05
我是操作数据库,  输出的结果是含 中文的列表, 然后导致输出是乱码。。

帮帮忙

list0 = [ ('李白' , '床前明月光') , ('李清照','鱼C论坛') , ('GDSMAD02154','0123548')]
list0_utf_8 = [(x[0] . encode('UTF-8') , x[1] . encode('UTF-8')) for x in list0]
list0 = [(x[0] . decode('UTF-8' , 'strict') , x[1] . decode('UTF-8' , 'strict')) for x in list0_utf_8]
        你的代码:
# encoding : utf-8
list0 = [('李白','床前明月光') , ('李清照','鱼C论坛') , ('GDSMAD02154','0123548')]
list1 = [(x[0] . decode('UTF-8' , 'strict') , x[1] . decode('UTF-8' , 'strict')) for x in list0]
print(list1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-10 14:43:46 | 显示全部楼层

如果的结果是很多的呢,怎么办?  
比如 我现在是查询一个表格, 出来的结果N多个行的。
import pymssql  

ID = input("请输入学号:")
SEX = input("请输入性别:")

conn = pymssql.connect(
host='127.0.0.1',      
user='sa',                
password='qq123456',  
database='test',          
port='1433',                
charset='utf8')           
   
cur = conn.cursor()
print("数据库连接成功")

cur.execute ("select from student where id=%s and  sex=%s",(ID,SEX))

data = cur.fetchall() 

print(data)

################
charset='utf8'  ,能够正确连接到数据库, 但是输出中文乱码了


charset='GBK', 也能正确连接到数据库, 但sql 不能使用传入参数, 否则就报utf-8的错误。。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-10 15:15:14 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-1-10 15:17 编辑
maxliu06 发表于 2020-1-10 14:43
如果的结果是很多的呢,怎么办?  
比如 我现在是查询一个表格, 出来的结果N多个行的。  


      那恐怕在指令传出前,需要把它 encode() 到 UTF-8,对所有接收到的文本内容都得按 UTF-8 decode() 才行。你应该不是头一个遇到此问题的人,业内肯定会有非常成熟的解决方案,在网上查一下或向数据库的大牛咨询一下呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-10 16:09:46 | 显示全部楼层
jackz007 发表于 2020-1-10 15:15
那恐怕在指令传出前,需要把它 encode() 到 UTF-8,对所有接收到的文本内容都得按 UTF-8 decode( ...

非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 15:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表