2006年08月09日 星期三 11:16
Hi All,
我在用python建一个简单的数据库应用。其中需要向数据库里面插入数据,但是在插入中文数据的时候总是出现错误。
Traceback (most recent call last):
File "C:\cis\cgi-bin\cisdb.py", line 247, in test12
[(2, 'router'), (4, 'modem'), (1, 'trans1')])
File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper
ret = func(*args, **kwargs)
File "C:\cis\cgi-bin\cisdb.py", line 140, in add_client
cid = self._add_client_info(name, contact, phone, other_access,
recourse, misc, topology)
File "C:\cis\cgi-bin\cisdb.py", line 147, in _add_client_info
self.cursor.execute("insert into clients (name, contact, phone,
other_access, recourse, misc, topology) "\
File "C:\Python24\Lib\site-packages\MySQLdb\cursors.py", line 146, in
execute
query = query.encode(charset)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 92:
ordinal not in range(128)
MySQL版本是5.0,使用utf8作为default character set。MySQLdb版本是4.1.0,python版本是2.4.3
我使用下面的代码建立连接:
self.connection = MySQLdb.connect(host = self.database_hostname,
user = self.username,
passwd = self.password, db =
self.database_name,
charset = self.charset,
use_unicode = False)
其中self.charset='utf8'。
但是在跟踪的时候我发现在cursor里面的execute()中connection的charset并不是'utf8'而是'ascii'。
....
db = self._get_db()
charset = db.character_set_name()
....
这应该就是出现问题的原因。但我不明白为什么在connect()里面设置的charset没有起作用。没有办法跟踪进_mysql,也就无从知道connection的character_set_name()里面都发生了什么。有没有什么办法可以解决这个问题?谢谢啦
--
Thanks&&Regards;,
Li Hongliang
挟一卷书
观天测地
仗一口剑
保家卫国
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/83383ee5/attachment.htm
2006年08月09日 星期三 11:20
self.cursor.execute(u"insert into clients (name, contact, phone,
other_access, recourse, misc, topology) ".encod('uft-8'))
试试看吧,这个库我没用过,只是在其它场合遇到类似问题的一点经验。
在06-8-9,R. Potato <rough.vanzolo at gmail.com> 写道:
>
> Hi All,
>
> 我在用python建一个简单的数据库应用。其中需要向数据库里面插入数据,但是在插入中文数据的时候总是出现错误。
>
> Traceback (most recent call last):
> File "C:\cis\cgi-bin\cisdb.py", line 247, in test12
> [(2, 'router'), (4, 'modem'), (1, 'trans1')])
> File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper
> ret = func(*args, **kwargs)
> File "C:\cis\cgi-bin\cisdb.py", line 140, in add_client
> cid = self._add_client_info(name, contact, phone, other_access,
> recourse, misc, topology)
> File "C:\cis\cgi-bin\cisdb.py", line 147, in _add_client_info
> self.cursor.execute("insert into clients (name, contact, phone,
> other_access, recourse, misc, topology) "\
> File "C:\Python24\Lib\site-packages\MySQLdb\cursors.py", line 146, in
> execute
> query = query.encode(charset)
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 92:
> ordinal not in range(128)
> MySQL版本是5.0,使用utf8作为default character set。MySQLdb版本是4.1.0,python版本是2.4.3
> 我使用下面的代码建立连接:
>
> self.connection = MySQLdb.connect(host =
> self.database_hostname, user = self.username,
> passwd = self.password, db =
> self.database_name ,
> charset = self.charset,
> use_unicode = False)
> 其中self.charset='utf8'。
> 但是在跟踪的时候我发现在cursor里面的execute()中connection的charset并不是'utf8'而是'ascii'。
> ....
> db = self._get_db()
> charset = db.character_set_name()
> ....
>
> 这应该就是出现问题的原因。但我不明白为什么在connect()里面设置的charset没有起作用。没有办法跟踪进_mysql,也就无从知道connection的character_set_name()里面都发生了什么。有没有什么办法可以解决这个问题?谢谢啦
>
> --
> Thanks&&Regards;,
> Li Hongliang
>
> 挟一卷书
> 观天测地
> 仗一口剑
> 保家卫国
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
--
欢迎访问:
http://blog.csdn.net/ccat
刘鑫
March.Liu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/1ed9f211/attachment.html
2006年08月09日 星期三 11:31
我写了一个最简单的测试函数:
self.cursor.execute("insert into clients (name) values
('客户')".encode('utf-8'))
但是错误还是有
Traceback (most recent call last):
File "C:\cis\cgi-bin\cisdb.py", line 249, in test12
db.test()
File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper
ret = func(*args, **kwargs)
File "C:\cis\cgi-bin\cisdb.py", line 201, in test
self.cursor.execute("insert into clients (name) values
('客户')".encode('utf-8'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbf in position 36:
ordinal not in range(128)
On 8/9/06, 刘鑫 <march.liu at gmail.com> wrote:
>
> self.cursor.execute(u"insert into clients (name, contact, phone,
> other_access, recourse, misc, topology) ".encod('uft-8'))
> 试试看吧,这个库我没用过,只是在其它场合遇到类似问题的一点经验。
>
> 在06-8-9,R. Potato <rough.vanzolo at gmail.com > 写道:
> >
> > Hi All,
> >
> > 我在用python建一个简单的数据库应用。其中需要向数据库里面插入数据,但是在插入中文数据的时候总是出现错误。
> >
> > Traceback (most recent call last):
> > File "C:\cis\cgi-bin\cisdb.py", line 247, in test12
> > [(2, 'router'), (4, 'modem'), (1, 'trans1')])
> > File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper
> > ret = func(*args, **kwargs)
> > File "C:\cis\cgi-bin\cisdb.py", line 140, in add_client
> > cid = self._add_client_info(name, contact, phone, other_access,
> > recourse, misc, topology)
> > File "C:\cis\cgi-bin\cisdb.py", line 147, in _add_client_info
> > self.cursor.execute("insert into clients (name, contact, phone,
> > other_access, recourse, misc, topology) "\
> > File "C:\Python24\Lib\site-packages\MySQLdb\cursors.py", line 146, in
> > execute
> > query = query.encode(charset)
> > UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 92:
> > ordinal not in range(128)
> > MySQL版本是5.0,使用utf8作为default character set。MySQLdb版本是4.1.0,python版本是2.4.3
> > 我使用下面的代码建立连接:
> >
> > self.connection = MySQLdb.connect(host =
> > self.database_hostname, user = self.username,
> > passwd = self.password, db
> > = self.database_name ,
> > charset = self.charset,
> > use_unicode = False)
> > 其中self.charset='utf8'。
> > 但是在跟踪的时候我发现在cursor里面的execute()中connection的charset并不是'utf8'而是'ascii'。
> > ....
> > db = self._get_db()
> > charset = db.character_set_name()
> > ....
> >
> > 这应该就是出现问题的原因。但我不明白为什么在connect()里面设置的charset没有起作用。没有办法跟踪进_mysql,也就无从知道connection的character_set_name()里面都发生了什么。有没有什么办法可以解决这个问题?谢谢啦
> >
> > --
> > Thanks&&Regards;,
> > Li Hongliang
> >
> > 挟一卷书
> > 观天测地
> > 仗一口剑
> > 保家卫国
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
>
> --
> 欢迎访问:
> http://blog.csdn.net/ccat
>
> 刘鑫
> March.Liu
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
--
Thanks&&Regards;,
Li Hongliang
挟一卷书
观天测地
仗一口剑
保家卫国
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/ef31f032/attachment.htm
2006年08月09日 星期三 11:43
#!/usr/bin/env python # -*- coding: UTF-8 -*- 开头加上这个 并且文件 按 utf8 编码保存 On 8/9/06, R. Potato <rough.vanzolo at gmail.com> wrote: > > 我写了一个最简单的测试函数: > self.cursor.execute("insert into clients (name) values > ('客户')".encode('utf-8')) > 但是错误还是有 > Traceback (most recent call last): > File "C:\cis\cgi-bin\cisdb.py", line 249, in test12 > db.test() > > File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper > ret = func(*args, **kwargs) > File "C:\cis\cgi-bin\cisdb.py", line 201, in test > self.cursor.execute("insert into clients (name) values > ('客户')".encode('utf-8')) > UnicodeDecodeError: 'ascii' codec can't decode byte 0xbf in position 36: > ordinal not in range(128) > > > > On 8/9/06, 刘鑫 <march.liu at gmail.com> wrote: > > > > self.cursor.execute(u"insert into clients (name, contact, phone, > > other_access, recourse, misc, topology) ".encod('uft-8')) > > 试试看吧,这个库我没用过,只是在其它场合遇到类似问题的一点经验。 > > > > 在06-8-9,R. Potato <rough.vanzolo at gmail.com > 写道: > > > > > > Hi All, > > > > > > 我在用python建一个简单的数据库应用。其中需要向数据库里面插入数据,但是在插入中文数据的时候总是出现错误。 > > > > > > Traceback (most recent call last): > > > File "C:\cis\cgi-bin\cisdb.py", line 247, in test12 > > > [(2, 'router'), (4, 'modem'), (1, 'trans1')]) > > > File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper > > > ret = func(*args, **kwargs) > > > File "C:\cis\cgi-bin\cisdb.py", line 140, in add_client > > > cid = self._add_client_info(name, contact, phone, other_access, > > > recourse, misc, topology) > > > File "C:\cis\cgi-bin\cisdb.py", line 147, in _add_client_info > > > self.cursor.execute("insert into clients (name, contact, phone, > > > other_access, recourse, misc, topology) "\ > > > File "C:\Python24\Lib\site-packages\MySQLdb\cursors.py", line 146, > > > in execute > > > query = query.encode(charset) > > > UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position > > > 92: ordinal not in range(128) > > > MySQL版本是5.0,使用utf8作为default character set。MySQLdb版本是4.1.0,python > > > 版本是2.4.3 > > > 我使用下面的代码建立连接: > > > > > > self.connection = MySQLdb.connect(host = > > > self.database_hostname, user = self.username, > > > passwd = self.password, > > > db = self.database_name , > > > charset = self.charset, > > > use_unicode = False) > > > 其中self.charset='utf8'。 > > > 但是在跟踪的时候我发现在cursor里面的execute()中connection的charset并不是'utf8'而是'ascii'。 > > > .... > > > db = self._get_db() > > > charset = db.character_set_name() > > > .... > > > > > > 这应该就是出现问题的原因。但我不明白为什么在connect()里面设置的charset没有起作用。没有办法跟踪进_mysql,也就无从知道connection的character_set_name()里面都发生了什么。有没有什么办法可以解决这个问题?谢谢啦 > > > > > > -- > > > Thanks&&Regards;, > > > Li Hongliang > > > > > > 挟一卷书 > > > 观天测地 > > > 仗一口剑 > > > 保家卫国 > > > > > > > > > _______________________________________________ > > > python-chinese > > > Post: send python-chinese at lists.python.cn > > > Subscribe: send subscribe to python-chinese-request at lists.python.cn > > > Unsubscribe: send unsubscribe to > > > python-chinese-request at lists.python.cn > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > -- > > 欢迎访问: > > http://blog.csdn.net/ccat > > > > 刘鑫 > > March.Liu > > > > > > _______________________________________________ > > python-chinese > > Post: send python-chinese at lists.python.cn > > Subscribe: send subscribe to python-chinese-request at lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > > -- > Thanks&&Regards;, > Li Hongliang > > 挟一卷书 > 观天测地 > 仗一口剑 > 保家卫国 > > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/94dcfa7b/attachment.htm
2006年08月09日 星期三 12:15
在windows下面默认应该是使用gbk编码的。在文件开始加上 # -*- coding: gbk -*- 就可以使用u'XXXXX'这种字符串了,不一定是要用utf-8的coding加上utf8编码的文件。 但是我这里没有涉及到使用unicode字符串,而是使用encode(),应该没有这个问题。我也按照上面说的做了,结果还是一样有错。 On 8/9/06, lu <lubiao.py at gmail.com> wrote: > > #!/usr/bin/env python > # -*- coding: UTF-8 -*- > 开头加上这个 > > 并且文件 按 utf8 编码保存 > > On 8/9/06, R. Potato <rough.vanzolo at gmail.com> wrote: > > > > 我写了一个最简单的测试函数: > > self.cursor.execute("insert into clients (name) values > > ('客户')".encode('utf-8')) > > 但是错误还是有 > > Traceback (most recent call last): > > File "C:\cis\cgi-bin\cisdb.py", line 249, in test12 > > db.test() > > > > File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper > > ret = func(*args, **kwargs) > > File "C:\cis\cgi-bin\cisdb.py", line 201, in test > > self.cursor.execute("insert into clients (name) values > > ('客户')".encode('utf-8')) > > UnicodeDecodeError: 'ascii' codec can't decode byte 0xbf in position 36: > > ordinal not in range(128) > > > > > > > > On 8/9/06, 刘鑫 <march.liu at gmail.com> wrote: > > > > > > self.cursor.execute(u"insert into clients (name, contact, phone, > > > other_access, recourse, misc, topology) ".encod('uft-8')) > > > 试试看吧,这个库我没用过,只是在其它场合遇到类似问题的一点经验。 > > > > > > 在06-8-9,R. Potato <rough.vanzolo at gmail.com > 写道: > > > > > > > > Hi All, > > > > > > > > 我在用python建一个简单的数据库应用。其中需要向数据库里面插入数据,但是在插入中文数据的时候总是出现错误。 > > > > > > > > Traceback (most recent call last): > > > > File "C:\cis\cgi-bin\cisdb.py", line 247, in test12 > > > > [(2, 'router'), (4, 'modem'), (1, 'trans1')]) > > > > File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper > > > > ret = func(*args, **kwargs) > > > > File "C:\cis\cgi-bin\cisdb.py", line 140, in add_client > > > > cid = self._add_client_info(name, contact, phone, other_access, > > > > recourse, misc, topology) > > > > File "C:\cis\cgi-bin\cisdb.py", line 147, in _add_client_info > > > > self.cursor.execute("insert into clients (name, contact, phone, > > > > other_access, recourse, misc, topology) "\ > > > > File "C:\Python24\Lib\site-packages\MySQLdb\cursors.py", line 146, > > > > in execute > > > > query = query.encode(charset) > > > > UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position > > > > 92: ordinal not in range(128) > > > > MySQL版本是5.0,使用utf8作为default character set。MySQLdb版本是4.1.0,python > > > > 版本是2.4.3 > > > > 我使用下面的代码建立连接: > > > > > > > > self.connection = MySQLdb.connect(host = > > > > self.database_hostname, user = self.username, > > > > passwd = self.password, > > > > db = self.database_name , > > > > charset = self.charset, > > > > use_unicode = False) > > > > 其中self.charset='utf8'。 > > > > 但是在跟踪的时候我发现在cursor里面的execute()中connection的charset并不是'utf8'而是'ascii'。 > > > > .... > > > > db = self._get_db() > > > > charset = db.character_set_name() > > > > .... > > > > > > > > 这应该就是出现问题的原因。但我不明白为什么在connect()里面设置的charset没有起作用。没有办法跟踪进_mysql,也就无从知道connection的character_set_name()里面都发生了什么。有没有什么办法可以解决这个问题?谢谢啦 > > > > > > > > -- > > > > Thanks&&Regards;, > > > > Li Hongliang > > > > > > > > 挟一卷书 > > > > 观天测地 > > > > 仗一口剑 > > > > 保家卫国 > > > > > > > > > > > > _______________________________________________ > > > > python-chinese > > > > Post: send python-chinese at lists.python.cn > > > > Subscribe: send subscribe to python-chinese-request at lists.python.cn > > > > Unsubscribe: send unsubscribe to > > > > python-chinese-request at lists.python.cn > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > -- > > > 欢迎访问: > > > http://blog.csdn.net/ccat > > > > > > 刘鑫 > > > March.Liu > > > > > > > > > _______________________________________________ > > > python-chinese > > > Post: send python-chinese at lists.python.cn > > > Subscribe: send subscribe to python-chinese-request at lists.python.cn > > > Unsubscribe: send unsubscribe to > > > python-chinese-request at lists.python.cn > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > -- > > Thanks&&Regards;, > > Li Hongliang > > > > 挟一卷书 > > 观天测地 > > 仗一口剑 > > 保家卫国 > > > > _______________________________________________ > > python-chinese > > Post: send python-chinese at lists.python.cn > > Subscribe: send subscribe to python-chinese-request at lists.python.cn > > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > > > > > _______________________________________________ > python-chinese > Post: send python-chinese at lists.python.cn > Subscribe: send subscribe to python-chinese-request at lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese > > -- Thanks&&Regards;, Li Hongliang 挟一卷书 观天测地 仗一口剑 保家卫国 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/8a31fb1c/attachment.htm
2006年08月09日 星期三 12:34
是u'string'.encod('utf-8'),确实应该在前边加utf-8编码标记,不知道能否对您有帮助,祝好运。
在06-8-9,R. Potato <rough.vanzolo at gmail.com> 写道:
>
> 在windows下面默认应该是使用gbk编码的。在文件开始加上
> # -*- coding: gbk -*-
> 就可以使用u'XXXXX'这种字符串了,不一定是要用utf-8的coding加上utf8编码的文件。
> 但是我这里没有涉及到使用unicode字符串,而是使用encode(),应该没有这个问题。我也按照上面说的做了,结果还是一样有错。
>
>
> On 8/9/06, lu <lubiao.py at gmail.com> wrote:
> >
> > #!/usr/bin/env python
> > # -*- coding: UTF-8 -*-
> > 开头加上这个
> >
> > 并且文件 按 utf8 编码保存
> >
> > On 8/9/06, R. Potato <rough.vanzolo at gmail.com > wrote:
> > >
> > > 我写了一个最简单的测试函数:
> > > self.cursor.execute("insert into clients (name) values
> > > ('客户')".encode('utf-8'))
> > > 但是错误还是有
> > > Traceback (most recent call last):
> > > File "C:\cis\cgi-bin\cisdb.py", line 249, in test12
> > > db.test()
> > >
> > > File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper
> > > ret = func(*args, **kwargs)
> > > File "C:\cis\cgi-bin\cisdb.py", line 201, in test
> > > self.cursor.execute("insert into clients (name) values
> > > ('客户')".encode('utf-8'))
> > > UnicodeDecodeError: 'ascii' codec can't decode byte 0xbf in position
> > > 36: ordinal not in range(128)
> > >
> > >
> > >
> > > On 8/9/06, 刘鑫 <march.liu at gmail.com> wrote:
> > > >
> > > > self.cursor.execute(u"insert into clients (name, contact, phone,
> > > > other_access, recourse, misc, topology) ".encod('uft-8'))
> > > > 试试看吧,这个库我没用过,只是在其它场合遇到类似问题的一点经验。
> > > >
> > > > 在06-8-9,R. Potato <rough.vanzolo at gmail.com > 写道:
> > > > >
> > > > > Hi All,
> > > > >
> > > > > 我在用python建一个简单的数据库应用。其中需要向数据库里面插入数据,但是在插入中文数据的时候总是出现错误。
> > > > >
> > > > > Traceback (most recent call last):
> > > > > File "C:\cis\cgi-bin\cisdb.py", line 247, in test12
> > > > > [(2, 'router'), (4, 'modem'), (1, 'trans1')])
> > > > > File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper
> > > > > ret = func(*args, **kwargs)
> > > > > File "C:\cis\cgi-bin\cisdb.py", line 140, in add_client
> > > > > cid = self._add_client_info(name, contact, phone,
> > > > > other_access, recourse, misc, topology)
> > > > > File "C:\cis\cgi-bin\cisdb.py", line 147, in _add_client_info
> > > > > self.cursor.execute("insert into clients (name, contact,
> > > > > phone, other_access, recourse, misc, topology) "\
> > > > > File "C:\Python24\Lib\site-packages\MySQLdb\cursors.py", line
> > > > > 146, in execute
> > > > > query = query.encode(charset)
> > > > > UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in
> > > > > position 92: ordinal not in range(128)
> > > > > MySQL版本是5.0,使用utf8作为default character set。MySQLdb版本是4.1.0,python
> > > > > 版本是2.4.3
> > > > > 我使用下面的代码建立连接:
> > > > >
> > > > > self.connection = MySQLdb.connect(host =
> > > > > self.database_hostname, user = self.username,
> > > > > passwd =
> > > > > self.password, db = self.database_name ,
> > > > > charset =
> > > > > self.charset, use_unicode = False)
> > > > > 其中self.charset='utf8'。
> > > > >
> > > > > 但是在跟踪的时候我发现在cursor里面的execute()中connection的charset并不是'utf8'而是'ascii'。
> > > > > ....
> > > > > db = self._get_db()
> > > > > charset = db.character_set_name()
> > > > > ....
> > > > >
> > > > > 这应该就是出现问题的原因。但我不明白为什么在connect()里面设置的charset没有起作用。没有办法跟踪进_mysql,也就无从知道connection的character_set_name()里面都发生了什么。有没有什么办法可以解决这个问题?谢谢啦
> > > > >
> > > > > --
> > > > > Thanks&&Regards;,
> > > > > Li Hongliang
> > > > >
> > > > > 挟一卷书
> > > > > 观天测地
> > > > > 仗一口剑
> > > > > 保家卫国
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > python-chinese
> > > > > Post: send python-chinese at lists.python.cn
> > > > > Subscribe: send subscribe to
> > > > > python-chinese-request at lists.python.cn
> > > > > Unsubscribe: send unsubscribe to
> > > > > python-chinese-request at lists.python.cn
> > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > 欢迎访问:
> > > > http://blog.csdn.net/ccat
> > > >
> > > > 刘鑫
> > > > March.Liu
> > > >
> > > >
> > > > _______________________________________________
> > > > python-chinese
> > > > Post: send python-chinese at lists.python.cn
> > > > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > > > Unsubscribe: send unsubscribe to
> > > > python-chinese-request at lists.python.cn
> > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > >
> > >
> > > --
> > > Thanks&&Regards;,
> > > Li Hongliang
> > >
> > > 挟一卷书
> > > 观天测地
> > > 仗一口剑
> > > 保家卫国
> > >
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese at lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-request at lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
>
> --
> Thanks&&Regards;,
> Li Hongliang
>
> 挟一卷书
> 观天测地
> 仗一口剑
> 保家卫国
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
--
欢迎访问:
http://blog.csdn.net/ccat
刘鑫
March.Liu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/24b247d8/attachment.html
2006年08月09日 星期三 17:05
有中文字符的话,用这样的方法传递,execute有一个可以传递第二个参数的方法,将查询字符串中的%S替换为该参数。试验一下看!
def get_items(self, keyword = ''):
query = "SELECT * FROM items WHERE name LIKE %s;"
cursor = self.db.cursor()
keyword = keyword.encode()
keyword = '%' + keyword + '%'
fetchcnt = cursor.execute(query, keyword)
On 8/9/06, 刘鑫 <march.liu at gmail.com> wrote:
>
> 是u'string'.encod('utf-8'),确实应该在前边加utf-8编码标记,不知道能否对您有帮助,祝好运。
>
>
> 在06-8-9,R. Potato < rough.vanzolo at gmail.com> 写道:
> >
> > 在windows下面默认应该是使用gbk编码的。在文件开始加上
> > # -*- coding: gbk -*-
> > 就可以使用u'XXXXX'这种字符串了,不一定是要用utf-8的coding加上utf8编码的文件。
> > 但是我这里没有涉及到使用unicode字符串,而是使用encode(),应该没有这个问题。我也按照上面说的做了,结果还是一样有错。
> >
> >
> > On 8/9/06, lu <lubiao.py at gmail.com> wrote:
> > >
> > > #!/usr/bin/env python
> > > # -*- coding: UTF-8 -*-
> > > 开头加上这个
> > >
> > > 并且文件 按 utf8 编码保存
> > >
> > > On 8/9/06, R. Potato <rough.vanzolo at gmail.com > wrote:
> > > >
> > > > 我写了一个最简单的测试函数:
> > > > self.cursor.execute("insert into clients (name) values
> > > > ('客户')".encode('utf-8'))
> > > > 但是错误还是有
> > > > Traceback (most recent call last):
> > > > File "C:\cis\cgi-bin\cisdb.py", line 249, in test12
> > > > db.test()
> > > >
> > > > File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper
> > > > ret = func(*args, **kwargs)
> > > > File "C:\cis\cgi-bin\cisdb.py", line 201, in test
> > > > self.cursor.execute("insert into clients (name) values
> > > > ('客户')".encode('utf-8'))
> > > > UnicodeDecodeError: 'ascii' codec can't decode byte 0xbf in position
> > > > 36: ordinal not in range(128)
> > > >
> > > >
> > > >
> > > > On 8/9/06, 刘鑫 <march.liu at gmail.com> wrote:
> > > > >
> > > > > self.cursor.execute(u"insert into clients (name, contact, phone,
> > > > > other_access, recourse, misc, topology) ".encod('uft-8'))
> > > > > 试试看吧,这个库我没用过,只是在其它场合遇到类似问题的一点经验。
> > > > >
> > > > > 在06-8-9,R. Potato <rough.vanzolo at gmail.com > 写道:
> > > > > >
> > > > > > Hi All,
> > > > > >
> > > > > > 我在用python建一个简单的数据库应用。其中需要向数据库里面插入数据,但是在插入中文数据的时候总是出现错误。
> > > > > >
> > > > > > Traceback (most recent call last):
> > > > > > File "C:\cis\cgi-bin\cisdb.py", line 247, in test12
> > > > > > [(2, 'router'), (4, 'modem'), (1, 'trans1')])
> > > > > > File "C:\cis\cgi-bin\cisdb.py", line 58, in wrapper
> > > > > > ret = func(*args, **kwargs)
> > > > > > File "C:\cis\cgi-bin\cisdb.py", line 140, in add_client
> > > > > > cid = self._add_client_info(name, contact, phone,
> > > > > > other_access, recourse, misc, topology)
> > > > > > File "C:\cis\cgi-bin\cisdb.py", line 147, in _add_client_info
> > > > > > self.cursor.execute("insert into clients (name, contact,
> > > > > > phone, other_access, recourse, misc, topology) "\
> > > > > > File "C:\Python24\Lib\site-packages\MySQLdb\cursors.py", line
> > > > > > 146, in execute
> > > > > > query = query.encode(charset)
> > > > > > UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in
> > > > > > position 92: ordinal not in range(128)
> > > > > > MySQL版本是5.0,使用utf8作为default character set。MySQLdb版本是4.1.0,python
> > > > > > 版本是2.4.3
> > > > > > 我使用下面的代码建立连接:
> > > > > >
> > > > > > self.connection = MySQLdb.connect(host =
> > > > > > self.database_hostname, user = self.username,
> > > > > > passwd =
> > > > > > self.password, db = self.database_name ,
> > > > > > charset =
> > > > > > self.charset, use_unicode = False)
> > > > > > 其中self.charset='utf8'。
> > > > > >
> > > > > > 但是在跟踪的时候我发现在cursor里面的execute()中connection的charset并不是'utf8'而是'ascii'。
> > > > > > ....
> > > > > > db = self._get_db()
> > > > > > charset = db.character_set_name()
> > > > > > ....
> > > > > >
> > > > > > 这应该就是出现问题的原因。但我不明白为什么在connect()里面设置的charset没有起作用。没有办法跟踪进_mysql,也就无从知道connection的character_set_name()里面都发生了什么。有没有什么办法可以解决这个问题?谢谢啦
> > > > > >
> > > > > > --
> > > > > > Thanks&&Regards;,
> > > > > > Li Hongliang
> > > > > >
> > > > > > 挟一卷书
> > > > > > 观天测地
> > > > > > 仗一口剑
> > > > > > 保家卫国
> > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > python-chinese
> > > > > > Post: send python-chinese at lists.python.cn
> > > > > > Subscribe: send subscribe to
> > > > > > python-chinese-request at lists.python.cn
> > > > > > Unsubscribe: send unsubscribe to
> > > > > > python-chinese-request at lists.python.cn
> > > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > 欢迎访问:
> > > > > http://blog.csdn.net/ccat
> > > > >
> > > > > 刘鑫
> > > > > March.Liu
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > python-chinese
> > > > > Post: send python-chinese at lists.python.cn
> > > > > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > > > >
> > > > > Unsubscribe: send unsubscribe to
> > > > > python-chinese-request at lists.python.cn
> > > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Thanks&&Regards;,
> > > > Li Hongliang
> > > >
> > > > 挟一卷书
> > > > 观天测地
> > > > 仗一口剑
> > > > 保家卫国
> > > >
> > > > _______________________________________________
> > > > python-chinese
> > > > Post: send python-chinese at lists.python.cn
> > > > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > > > Unsubscribe: send unsubscribe to
> > > > python-chinese-request at lists.python.cn
> > > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > >
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese at lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-request at lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> >
> >
> > --
> > Thanks&&Regards;,
> > Li Hongliang
> >
> > 挟一卷书
> > 观天测地
> > 仗一口剑
> > 保家卫国
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
>
> --
> 欢迎访问:
> http://blog.csdn.net/ccat
>
> 刘鑫
> March.Liu
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
--
wangyingqi
c++/python/palm/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060809/e0c6bcf6/attachment.html
Zeuux © 2025
京ICP备05028076号