python怎么会这样的呢?搞不明白,求助啊!!!

python怎么会这样的呢?搞不明白,求助啊!!!

怎么程序在python处带的python shell里写就以正常运行。而把同样的程序在editplus里或用记事本写就会出错呢?程序如下:
# coding: cp936
import MySQLdb
conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',db='aa')
cursor=conn.cursor()
sql = u"""update users set login='测试' where id=2"""
cursor.execute(sql)

在editplus里出错信息如下:
---------- Python ----------
Traceback (most recent call last):
  File "boa1.py", line 6, in ?
    cursor.execute(sql)
  File "D:\Python\Lib\site-packages\MySQLdb\cursors.py", line 146, in execute
    query = query.encode(charset)
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 24-26: ordinal not in range(256)

输出完成 (耗时 0 秒) - 正常终止
你把源代码的编码改成utf8试试
明显的是编码有问题
怎么改呢?麻烦请说明白些好吗?我试过把文件另存为utf-8格式,#coding: utf-8,程序执行还是出错呢。


QUOTE:
原帖由 blygl 于 2006-9-25 11:39 发表
怎么改呢?麻烦请说明白些好吗?我试过把文件另存为utf-8格式,#coding: utf-8,程序执行还是出错呢。

楼主还是去学习一下基础教程吧,#coding:utf-8 并不代表文件内容就已经是utf8格式
记事本默认是cp936,你把sql语句的u去掉就可以了.
# coding: cp936
???

# -*- coding: cp936 -*-
!!!
老鸟都说是编码问题。但是我们新手怎么知道你们说的编码是怎么搞的呢?能举个例子说明一下吗?我把文件保存为utf8,把程序的# coding也改为utf-8,结果写个print u'你好',还是出错啊。
上面你的做法已经很对了。但出错没有描述清楚。比如:抛异常了,还是打印是乱码。如果是乱码并不是错误。因为u'你好'在执行时是会自动转为unicode的,因此print 其实是打印unicode。如果在命令行下应该是没有问题,如果在某个编辑器中,如果这个编辑器不支持unicode或没有正确转码就会有问题。

[Copy to clipboard] [ - ]
CODE:
#coding=utf-8
print u'你好'

我在命令行下运行没有问题,但在UliPad中运行有问题。
谢谢limodou 的回答,现在基本上清楚了。可能是我的editplus的编码不是很好吧。我在python shell里也是没问题的

QUOTE:
#coding: utf-8
print u'你好'

---------- Python ----------
Traceback (most recent call last):
  File "Noname6.py", line 2, in ?
    print u'浣犲ソ'
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(12

输出完成 (耗时 4 秒) - 正常终止