新人求助:python 读写 csv 和数据库的编码问题

wymesmile 2013-01-09 12:22:57
学习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里敲入的“['姓名','性别','电话'] ” 这句话 是用什么编码的啊???
...全文
1870 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImN1 2013-01-09
  • 打赏
  • 举报
回复
具体我也说不清楚,我也是怕这个麻烦而选择3.3的,3.3是确认是utf-8 其实判断是utf-8还是gbk很容易的,try一下就知道了,我都是用这个方法自动识别打开文件的编码的 try: f.read() ...
wymesmile 2013-01-09
  • 打赏
  • 举报
回复
我突然意识到, 是不是我的概念 全都乱了!!!
引用 12 楼 snmr_com 的回复:
你是不是不在win系统?*nix的pagecode是utf-8的
wymesmile 2013-01-09
  • 打赏
  • 举报
回复
我用 import sys print sys.getdefaultencoding() 显示的是:: ascii 这是不是说 默认是 acsii 编码啊!!
引用 12 楼 snmr_com 的回复:
你是不是不在win系统?*nix的pagecode是utf-8的
wymesmile 2013-01-09
  • 打赏
  • 举报
回复
我实在win xp 下边的, 我也没有修改过默认字符集啊!! 晕,难道我自己改过了??
引用 12 楼 snmr_com 的回复:
你是不是不在win系统?*nix的pagecode是utf-8的
ImN1 2013-01-09
  • 打赏
  • 举报
回复
你是不是不在win系统?*nix的pagecode是utf-8的
ImN1 2013-01-09
  • 打赏
  • 举报
回复
'\xe5\x8c\x97\xe4\xba\xac' 这个是utf-8编码没错,6字节对应了2个汉字 gbk只有4字节
wymesmile 2013-01-09
  • 打赏
  • 举报
回复
这是为什么啊?? 怎么 你的那个t 是 gbk编码的?是不是 开始的时候 你设置了 #coding=gbk 了??
引用 9 楼 bugs2k 的回复:
Python code?12345678910Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32Type "copyright", "credits" or "license()" for more information.>>> t='北京'>>> t'\x……
bugs2k 2013-01-09
  • 打赏
  • 举报
回复
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> t='北京'
>>> t
'\xb1\xb1\xbe\xa9'
>>> 
>>> s = t.decode('gbk')
>>> s
u'\u5317\u4eac'
>>>
wymesmile 2013-01-09
  • 打赏
  • 举报
回复
请教一个问题: >>> t='北京' // 网上也说,python默认编码是 unicode, 那么为什么这里的t是utf-8的编码啊? >>> t '\xe5\x8c\x97\xe4\xba\xac' //decode的作用是将其他编码的字符串转换成unicode编码 >>> s= t.decode('utf-8') >>> s u'\u5317\u4eac' >>> w=t.encode('utf-8') //报错
引用 6 楼 bugs2k 的回复:
貌似python内部编码应该是unicode,当输出到utf-8的数据库时,unicode字符串需要编码成utf-8字符串
wymesmile 2013-01-09
  • 打赏
  • 举报
回复
恩, 可以输出中文了,谢谢
引用 5 楼 xia077 的回复:
我也是刚刚学,不太懂, 不过你试着打印 for i in reader: print i[0],i[1],i[2]…… , 如果乱码,试着把i[0]转换一下编码!
引用 6 楼 bugs2k 的回复:
貌似python内部编码应该是unicode,当输出到utf-8的数据库时,unicode字符串需要编码成utf-8字符串
bugs2k 2013-01-09
  • 打赏
  • 举报
回复
貌似python内部编码应该是unicode,当输出到utf-8的数据库时,unicode字符串需要编码成utf-8字符串
xia077 2013-01-09
  • 打赏
  • 举报
回复
我也是刚刚学,不太懂, 不过你试着打印 for i in reader: print i[0],i[1],i[2]…… , 如果乱码,试着把i[0]转换一下编码!
ImN1 2013-01-09
  • 打赏
  • 举报
回复
打开csv文件和那个声明没啥关系 open(filename, 'r', encoding='utf-8') 3.3这样就能直接显示,2.7不知道,如果不是这样,可能要encode()+decode()
wymesmile 2013-01-09
  • 打赏
  • 举报
回复
不好意思,如果你看到这里,就不用回答上面的问题了,我换一个问题: 我现在windows下,用python 的idle连接csv文件,csv文件是 utf-8编码的, 我用python读取出来, 第一行也加了 #coding=utf-8 ,但还是不显示汉字, 显示的是['\xe6\x88\x91\xe5\xa5\xbd', '211', '2013-01-07'] ,这种情况是为什么? 哪里出问题了吗?
引用 1 楼 snmr_com 的回复:
不知道你的py版本,下面说的是py3.3 1.#coding:utf-8 是指py文件本身的编码声明,主要给unix系统识别的,实事求是,如果是gbk就写gbk而不要写utf-8 2.csv的编码根据你打开文件的encoding=xxx参数决定,没有这个参数一般跟随本地系统pagecode 3.查看你的py文件自身编码,不是utf-8就需要转换 综合上面,你应……
wymesmile 2013-01-09
  • 打赏
  • 举报
回复
谢谢了,我的python是 2.7.3的, 还有一个问题,麻烦一下, 如果想把一个csv文件的内容写到数据库, csv文件是 ascii编码的,而数据库是utf-8编码的,这个过程貌似跟python文件的编码没有关系,只要读出来再写进数据库就行了啊, 干嘛要考虑本地python的编码??
引用 1 楼 snmr_com 的回复:
不知道你的py版本,下面说的是py3.3 1.#coding:utf-8 是指py文件本身的编码声明,主要给unix系统识别的,实事求是,如果是gbk就写gbk而不要写utf-8 2.csv的编码根据你打开文件的encoding=xxx参数决定,没有这个参数一般跟随本地系统pagecode 3.查看你的py文件自身编码,不是utf-8就需要转换 综合上面,你应……
ImN1 2013-01-09
  • 打赏
  • 举报
回复
不知道你的py版本,下面说的是py3.3 1.#coding:utf-8 是指py文件本身的编码声明,主要给unix系统识别的,实事求是,如果是gbk就写gbk而不要写utf-8 2.csv的编码根据你打开文件的encoding=xxx参数决定,没有这个参数一般跟随本地系统pagecode 3.查看你的py文件自身编码,不是utf-8就需要转换 综合上面,你应该自己先弄清楚你的字串来源编码是什么

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧