在安装Python时,应该注意相关知识,所谓的Python是一种面向对象、直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,目前,基于这种语言的相关技术正在飞速的发展。
首先需要了解Python中有两种字符串(严格地说,似乎不能这么叫)。一种是普通的str对象(每个字符用8bits表示),另一种是unicode字符串,它们可以相互转换。首先打开pyshell,输入一段代码。
关于这两种字符串,Python文档-->LanguageReference-->DataModel-->The standard type hierarchy-->Sequences,有一些Strings,Unicode的描述。至于
- >>> a = "我"
- >>> b = unicode(a,"gb2312")
- >>> a.__class__ <type 'str'>
- >>> b.__class__ <type 'unicode'>
- >>>
什么情况用encode,什么情况又是decode呢,刚开始总是被搞昏。其实各种本地字符集的英文名是Coded Character Set,要转换为Coded,肯定是要encode了,同样,从里面解出来也应该叫decode……
decode就是把其他编码转换为unicode,等同于unicode函数;encode就是把unicode编码的字符串转换为特定编码。在pyshell里继续:a是Str类型的,所以再用encode会报错。用print输出时会调用默认编码转换为系统编码?
- >>> a = "我"
- >>> b = unicode(a,"gb2312")
- >>> a.__class__ <type 'str'>
- >>> b.__class__ <type 'unicode'>
- >>>
安装Python里默认的encode和decode是strict模式,所以会直接抛出Error,而Java里是默认replace模式,所以在处理servlet时经常会看到一串?????
在decode时传入第二个参数errors为'replace'可以和Java相同,但总是没成功,还不知道为什么
- >>> a = "我"
- >>> b = unicode(a,"gb2312")
- >>> a.__class__ <type 'str'>
- >>> b.__class__ <type 'unicode'>
- >>>
试了很久,无论在connect的时候指定charset='utf8',还是使用set_character_set(),或者执行"SET NAMES UTF8",跟踪到character_set_name()方法返回的都是latin1...再跟代码,似乎就跑到mysql-api里去了,反正***解决的办法也很简单,就是使用如下方式执行,而不要去拼sql语句……
只要安装Python,这些功能都是可用的除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图形库等等数不胜数。Python容易扩展和嵌入。Python提供的许多标准模块支持C或者C++接口。
Python和C可以一起工作,它可以嵌入到C或者C++的应用程序当中,因此可用Python语言为应用程序提供脚本接口,由于支持跨语言开发,可用Python设计概念化应用程序,并逐步移植到C,使用前不必用C重写应用程序。
(Jython使Python可以和Java一起工作,使开发者可以在安装Python里面调Java的包,也可以在Java里面使用Python的对象。还有更妙的,由于Jython的解释器完全用Java编写,因此可以在支持Java的任何平台上部署Python程序,甚至WEB浏览器也可以直接运行Python脚本。)
【编辑推荐】