新人求助:python 读写 csv 和数据库的编码问题
学习python一周了,现在被编码这个搞晕了, 我在python写了下面这些话:
#coding:utf-8
import csv
csvfile=file('d:/t2.csv','w')
writer=csv.writer(csvfile)
writer.writerow(['姓名','性别','电话'])
data=[('可乐,'26','12536454'),('天意','18','12345556')]
writer.writerows(data)
csvfile.close()
问题1, 这个#coding:utf-8 ,指的是 什么 被设置成了 utf-8 ??
问题2, 我查了一下, csv 默认编码为 acsii, 那么我用writer写的时候,并没有把 utf-8改成 acsii啊, 但是写入成功了,而且也没有任何错误啊
问题3, 我连接 postgresql 数据库时, 数据库默认是 utf-8 编码的, 是不是 如果想把['姓名','性别','电话'] 这三个字段写入数据库,就得把这个语句转换成 utf-8?? 那么 我怎么知道 我在python里敲入的“['姓名','性别','电话'] ” 这句话 是用什么编码的啊???
[解决办法]
不知道你的py版本,下面说的是py3.3
1.#coding:utf-8 是指py文件本身的编码声明,主要给unix系统识别的,实事求是,如果是gbk就写gbk而不要写utf-8
2.csv的编码根据你打开文件的encoding=xxx参数决定,没有这个参数一般跟随本地系统pagecode
3.查看你的py文件自身编码,不是utf-8就需要转换
综合上面,你应该自己先弄清楚你的字串来源编码是什么
[解决办法]
我也是刚刚学,不太懂, 不过你试着打印
for i in reader:
print i[0],i[1],i[2]…… ,
如果乱码,试着把i[0]转换一下编码!
[解决办法]
貌似python内部编码应该是unicode,当输出到utf-8的数据库时,unicode字符串需要编码成utf-8字符串