maxliu06 发表于 2020-1-10 11:51:33

python中 列表编码转换求助



默认用的编码是utf-8


但是列表怎么转成 GBK编码。

jackz007 发表于 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")

maxliu06 发表于 2020-1-10 14:05:51

jackz007 发表于 2020-1-10 12:29
列表和 UTF-8、GBK 编码有什么必然联系?把你的样例展示出来。

      编码:


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

print(list1)



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

帮帮忙


jackz007 发表于 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 . encode('UTF-8') , x . encode('UTF-8')) for x in list0]
list0 = [(x . decode('UTF-8' , 'strict') , x . decode('UTF-8' , 'strict')) for x in list0_utf_8]
      你的代码:
# encoding : utf-8
list0 = [('李白','床前明月光') , ('李清照','鱼C论坛') , ('GDSMAD02154','0123548')]
list1 = [(x . decode('UTF-8' , 'strict') , x . decode('UTF-8' , 'strict')) for x in list0]
print(list1)

maxliu06 发表于 2020-1-10 14:43:46

jackz007 发表于 2020-1-10 14:16
你的代码:

如果的结果是很多的呢,怎么办?
比如 我现在是查询一个表格, 出来的结果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 andsex=%s",(ID,SEX))

data = cur.fetchall()

print(data)

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


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


jackz007 发表于 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() 才行。你应该不是头一个遇到此问题的人,业内肯定会有非常成熟的解决方案,在网上查一下或向数据库的大牛咨询一下呢。

maxliu06 发表于 2020-1-10 16:09:46

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

非常感谢
页: [1]
查看完整版本: python中 列表编码转换求助