python数据库编码(python3.6cx)

1.python3.6 cx

我说下我遇到的情况

数据库字符集是 ZHS16GBK

错误的情况是

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 12: illegal multibyte sequence经过检查,在fetchall()获取记录时,查询到的记录里面有乱码(应该是不包含在数据库现有字符集下的字符)

临时的一个解决办法是

db=cx_Oracle.connect(dblink,encoding='UTF-8')这样可以读取了,读取到的内容为

广州市\ue738同泰路其中 '\ue738'应该是之前不可被读取的字符,希望对各位有帮助

Python连接数据库,Python与数据库,Python创建数据库

2.python3.4 编码有哪些

Python3中的编码问题前,第一个段落对字节、ASCII与Unicode与UTF-8等进行基本介绍,如果不对这几种编码犯头晕,可直接跳过。

ASCII与Unicode与UTF-8与GBK 首先从老大哥说起。跟很多人一样,大学读了这么久,久仰ASCII编码的大名。

要说这个老大哥,我们再先从字节说起。一个字节包括八个比特位,每个比特位表示0或1,一个字节即可表示从00000000到11111111共2^8=256个数字。

一个ASCII编码使用一个字节(除去字节的最高位作为作奇偶校验位),ASCII编码实际使用一个字节中的7个比特位来表示字符,共可表示2^7=128个字符。比如那时写C语言的程序,就经常要背下ASCII编码中的01000001(即十进制的65)表示字符'A',01000001加上32之后的01100001(即十进制的97)表示字符'a'。

现在打开Python,调用chr和ord函数,我们可以看到Python为我们对ASCII编码进行了转换。第一个00000000表示空字符,因此ASCII编码实际上只包括了 字母、标点符号、特殊符号等共127个字符。

因为ASCII是在美国出生的,对于由字母组成单词进而用单词表达的英文来说也是够了。但是中国人、日本人、韩国人等其他语言的人不服了。

中文是一个字一个字,ASCII编码用上了浑身解数256个字符都不够用。因此后来出现了Unicode编码。

Unicode编码通常由两个字节组成,共表示256*256个字符,即所谓的UCS-2。某些偏僻字还会用到四个字节,即所谓的UCS-4。

也就是说Unicode标准也还在发展。但UCS-4出现的比较少,我们先记住:最原始的ASCII编码使用一个字节编码,但由于语言差异字符众多,人们用上了两个字节,出现了统一的、囊括多国语言的Unicode编码。

在Unicode中,原本ASCII中的127个字符只需在前面补一个全零的字节即可,比如前文谈到的字符'a':01100001,在Unicode中变成了00000000 01100001。不久,美国人不开心了,吃上了世界民族之林的大锅饭,原本只需一个字节就能传输的英文现在变成两个字节,非常浪费存储空间和传输速度。

人们再发挥聪明才智,于是出现了UTF-8编码。因为针对的是空间浪费问题,因此这种UTF-8编码是可变长短的,从英文字母的一个字节,到中文的通常的三个字节,再到某些生僻字的六个字节。

解决了空间问题,UTF-8编码还有一个神奇的附加功能,那就是兼容了老大哥的ASCII编码。一些老古董软件现在在UTF-8编码中可以继续工作。

注意除了英文字母相同,汉字在Unicode编码和UTF-8编码中通常是不同的。比如汉字的‘中’字在Unicode中是0100111000101101,而在UTF-8编码中是11100100 1011100010101101。

我们祖国母亲自然也有自己的一套标准。那就是GB2312和GBK。

当然现在挺少看到。通常都是直接使用UTF-8。

记得我唯一一次看到GB编码的网页,是一个成人网站。Python3中的默认编码 Python3中默认是UTF-8,我们通过以下代码:import sys sys.getdefaultencoding() 可查看Python3的默认编码。

Python3中的encode和decode Python3中字符编码经常会使用到decode和encode函数。特别是在抓取网页中,这两个函数用的熟练非常有好处。

我的理解,encode的作用,使我们看到的直观的字符转换成计算机内的字节形式。decode刚好相反,把字节形式的字符转换成我们看的懂的、直观的、“人模人样”的形式。

如下图。\x表示后面是十六进制,\xe4\xb8\xad即是二进制的11100100 1011100010101101。

也就是说汉字‘中’encode成字节形式,是11100100 1011100010101101。同理,我们拿1110010010111000 10101101也就是\xe4\xb8\xad来decode回来,就是汉字‘中’。

完整的应该是b'\xe4\xb8\xad',在Python3中,以字节形式表示的字符串则必须加上前缀b,也就是写成上文的b'xxxx'形式。前文说的Python3的默认编码是UTF-8,所以我们可以看到,Python处理这些字符的时候是以UTF-8来处理的。

因此从上图可以看到,就算我们通过encode('utf-8')特意把字符encode为UTF-8编码,出来的结果还是相同:b'\xe4\xb8\xad'。明白了这一点,同时我们知道UTF-8兼容ASCII,我们可以猜想大学时经常背诵的'A'对应ASCII中的65,在这里是不是也能正确的decode出来呢。

十进制的65转换成十六进制是41,我们尝试下:b'\x41'.decode() 结果如下。果然是字符'A' Python3中的编码转换 据说字符在计算机的内存中统一是以Unicode编码的。

只有在字符要被写进文件、存进硬盘或者从服务器发送至客户端(例如网页前端的代码)时会变成utf-8。但其实我比较关心怎么把这些字符以Unicode的字节形式表现出来,露出它在内存中的庐山正面目的。

这里有个照妖镜:xxxx.encode/decode('unicode-escape') 输出如下 b'\\u4e2d'还是b'\u4e2d,一个斜杠貌似没影响。同时可以发现在shell窗口中,直接输'\u4e2d'和输入b'\u4e2d'.decode('unicode-escape')是相同的,都会打印出汉字‘中’,反而是'\u4e2d'.decode('unicode-escape')会报错。

说明说明Python3不仅支持Unicode,而且一个'\uxxxx'格式的Unicode字符可被辨识且被等价于str类。

编码,数据库,python

3.python3连接MSSQL数据库 中文乱码怎么解决

以前用php连mssqy时也经常出现中文乱码(中文变问号)的问题,那时就明白是编码没设置好导航,现在的Python连mssql数据库也同样出现这问题,问题一样,解决的办法当然也会相似,现在我们来看看解决方法。

python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合)。

(1)、首先,要保证文件的开头要加上编码设置来说明文件的编码

代码如下

复制代码

#encoding=utf-8

(2)、然后,在连接数据的连接参数里加上字符集说明查询出的结果的编码,这个不加的后果可能是查询出的汉字字符都是问号

代码如下

复制代码

conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')

(3)、设置python系统的默认编码(对于文件来说,这招几乎屡试不爽,呵呵~~)

代码如下

复制代码

import sys

reload(sys)

sys.setdefaultencoding('utf8')

注意:上述编码是“utf8”,而不是“utf-8”,我也没弄明白,大部分情况下,这个无所谓的,但是这里我试了必须要是“utf8”

一个简单的完整的python连接mssqlserver的例子如下(得安装pymssql包):

代码如下

复制代码

#encoding:utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

import pymssql

try:

conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')

sql="select * from UserInfo"

cur=conn.cursor()

cur.execute(sql)

data=cur.fetchall()

conn.close()

print data

except Exception,e:

print e

运行结果如下:

代码如下

复制代码

[(u'20093501', u'xb9xf9xbexb8', u'u7537 ', 35, u'xb4xf3xcfxc0'),

(u'20093502', u'xbbxc6xc8xd8', u'u5973 ', 34, u'xc3xc0xc5xae'),

(u'20093503', u'xc1xeexbaxfcxb3xe5', u'u7537 ', 25, u'2Bxc7xe0xc4xea'),

(u'20093504', u'xc8xcexd3xafxd3xaf', u'u5973 ', 24, u'xc6xafxc1xc1')]

[Finished in 0.2s]

虽然摆脱了问号和乱码的困扰,但这仍不是我们想要的结果,但这个确实是正确的,因为结果是utf8编码。这个现象确实诡异,请教了许多高手,得知,最好的结果就是逐个字段查询,才能显示中文,整个查询的话,会以utf8的格式显示出来。

上述代码中第14行data是整个查询的结果,如果指定某个具体的字段,如print data[0][2](表示取查询结果的第一行第三列的字段的值),则会输出中文。

其实不仅仅是mssqlserver数据库,mysql(需下载MySQLdb包)、sqllite(python自带的文件数据库)、mongodb(需下载PyMongo包)等或者是普通文本文件也是类似的解决方案。

python数据库编码

转载请注明出处编程代码网 » python数据库编码(python3.6cx)

资讯

python美国国旗(美国的国旗是什么样的)

阅读(27)

本文主要为您介绍python美国国旗,内容包括美国的国旗是什么样的,美国国旗,多少个星?,美国国旗一共变化过几次?。美利坚合众国的国旗旗面由13道红白相间的宽条构成,左上角还有一个包含了50颗白色小五角星的蓝色长方形。50颗小星代表了美国的5

资讯

python类global(请问这个pythonglobal语句是什么意思?)

阅读(31)

本文主要为您介绍python类global,内容包括python中global的作用是什么?,请问这个pythonglobal语句是什么意思?,Pythonglobal定义全局变量,解析Python函数变量如何使用。PenitentSin回答的挺。只是那个字典的key值可以这样理解globals()["a%d

资讯

python开发ios应用程序(Python有可能可以开发iOS原生应用吗)

阅读(38)

本文主要为您介绍python开发ios应用程序,内容包括Python有可能可以开发iOS原生应用吗,用QStackedWidget,怎么实现窗口切换,做苹果APP开发需要准备什么?。Docker和云原生应用的12要素 随着Docker容器的兴起,云原生应用越来越流行。事实上,云原

资讯

python简易爬虫(爬虫是什么,Python开发简单爬虫教程)

阅读(51)

本文主要为您介绍python简易爬虫,内容包括如何用Python编写一个简单的爬虫,爬虫是什么,Python开发简单爬虫教程,怎么样在Python中制作简单的网页爬虫。Python简单易学、免费开源、高层语言、可移植性超强、可扩展性、面向对象、可嵌入型、

资讯

python编写的小工具(用Python写过哪些的小工具)

阅读(28)

本文主要为您介绍python编写的小工具,内容包括用Python写过哪些的小工具,用Python写过哪些脑洞大开的小工具,编写python的软件?。用后缀树找出《红楼梦》中的单词,并且生成一段《红楼梦》风格的文字。缘起是我之前看到了一篇分析红楼梦词频

资讯

python库高性能(python与php哪个性能高)

阅读(40)

本文主要为您介绍python库高性能,内容包括python与php哪个性能高,python高级特性知多少,Python几种主流框架比较。语法:PHP 的语法看起来就像没有经过精心设计一样,很随意。有的语法看似很方便(用点来连接字符串), 但是却为之后扩展造成了很多麻

资讯

python对象self(python中self是什么意思?)

阅读(31)

本文主要为您介绍python对象self,内容包括python中self是什么意思?,python中self是什么,python中self是什么。题主可以学习一下面向对象编程的一般知识。概括的说,主流的支持面向对象编程的语言(Java, python等)关于“类”的定义是很接近的。

资讯

python客户端编程(python网络编程tcp客户端怎么写)

阅读(39)

本文主要为您介绍python客户端编程,内容包括python做客户端程序适合吗,python网络编程tcp客户端怎么写,Python中用socket编写服务器和客户端。大多数连接都是可靠的TCP连接。创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。

资讯

python翻译api接口(如何用python调用百度翻译)

阅读(34)

本文主要为您介绍python翻译api接口,内容包括如何应用bing翻译apipython,如何用python调用百度翻译,python怎么提供api接口。#/usr/bin/env python#coding=utf8import httplibimport md5import urlli

资讯

python附件中文(python发送邮件,附件中文命名,怎么破)

阅读(33)

本文主要为您介绍python附件中文,内容包括python发送邮件,附件中文命名,怎么破,python发送邮件,附件中文命名,怎么破,python如何打开中文文件文件名是中文。不知道你是不是用的smtp来发的,我的发中文的附件没问题 #coding=utf-8Created on 2

资讯

python微信开发文档(如何用python给微信发信息)

阅读(29)

本文主要为您介绍python微信开发文档,内容包括如何使用Python开发微信小程序,python能不能做微信开发,python能不能做微信开发。基于文本文档(Markdown) 设想好需要的基本需要的表、字段、类型;使用 Rails Migration 随着功能的开发逐步创建表

资讯

python美国国旗(美国的国旗是什么样的)

阅读(27)

本文主要为您介绍python美国国旗,内容包括美国的国旗是什么样的,美国国旗,多少个星?,美国国旗一共变化过几次?。美利坚合众国的国旗旗面由13道红白相间的宽条构成,左上角还有一个包含了50颗白色小五角星的蓝色长方形。50颗小星代表了美国的5

资讯

python类global(请问这个pythonglobal语句是什么意思?)

阅读(31)

本文主要为您介绍python类global,内容包括python中global的作用是什么?,请问这个pythonglobal语句是什么意思?,Pythonglobal定义全局变量,解析Python函数变量如何使用。PenitentSin回答的挺。只是那个字典的key值可以这样理解globals()["a%d

资讯

python开发ios应用程序(Python有可能可以开发iOS原生应用吗)

阅读(38)

本文主要为您介绍python开发ios应用程序,内容包括Python有可能可以开发iOS原生应用吗,用QStackedWidget,怎么实现窗口切换,做苹果APP开发需要准备什么?。Docker和云原生应用的12要素 随着Docker容器的兴起,云原生应用越来越流行。事实上,云原

资讯

python简易爬虫(爬虫是什么,Python开发简单爬虫教程)

阅读(51)

本文主要为您介绍python简易爬虫,内容包括如何用Python编写一个简单的爬虫,爬虫是什么,Python开发简单爬虫教程,怎么样在Python中制作简单的网页爬虫。Python简单易学、免费开源、高层语言、可移植性超强、可扩展性、面向对象、可嵌入型、

资讯

python编写的小工具(用Python写过哪些的小工具)

阅读(28)

本文主要为您介绍python编写的小工具,内容包括用Python写过哪些的小工具,用Python写过哪些脑洞大开的小工具,编写python的软件?。用后缀树找出《红楼梦》中的单词,并且生成一段《红楼梦》风格的文字。缘起是我之前看到了一篇分析红楼梦词频