python编码问题

  最进编程,需要用到数据库,为了便于使用,数据库的名称需要使用中文,但是我在ulipad里面编程,却是无法实现,问题出在哪了?经过后来的分析,解决了这个问题,特此记录一下。

  在ulipad开发环境中,需要用户指定编码方式,如下:

  # coding= utf-8

  表示使用的是utf-8编码。但是在这种编码下,你在shell调试窗口时看不到中文字符的。如输入“我们”,在shell看到的肯定是xe6x88x91xe4xbbxac。

如果要在shell窗口看到中文,需要将# coding= utf-8改为# coding= gbk即可。但是问题出现了,数据库一般默认的是utf-8编码,如果你设定为gbk编码

则与数据库的不匹配,无法创建数据库表,因此遇到这种问题,该如何了?

  具体办法是使用编码转换,编码方式还是uft-8,但是对数据库的表的名称进行一次编码转换,然后在创建数据库,这样就可以实现用中文名称创建数据库,同时在数据库中看到的也是中文。关于编码转换需要说到两个函数,

  字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。 

  decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。 

  encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。 

  如你需要用“我们”来创建数据库,具体如下:

  str = “我们”

  TableNameTmp = str .decode('gbk')
  TableName = TableNameTmp.encode('utf-8')

这样就可以满足了,create table TableName(id int);进入数据库,看到的就是已“我们”命名的数据库了。

原文地址:https://www.cnblogs.com/gaoshanxiaolu/p/3929739.html