打开记事本,菜单“文件”-“打开”,找到目标文件,选中,这时下面的编码中显示的就是这个文件的编码,ANSI, Unicode, Unicode big endian, UTF-8。
Quixote对unicode的处理,目前不知道有没有完全搞定,之前PTL文件里title如果是中文会报错:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 46: ordinal not in range(128)
把quixote目录下的__init__.py中DEFAULT_CHARSET从iso-8859-1改为utf-8。
http_request.py中的iso-8859-1改为utf-8。(这个不改好像也没事?)
在Python的lib/site-packages/目录下新建一个文件sitecustomize.py:
(参考: http://hi.baidu.com/dushm/blog/item/95597acb5373431dbe09e6af.html)
现在不报错了,不知道会不会再碰到错误。
转载一篇讨论Quixote处理unicode的豆瓣文章:
http://www.douban.com/group/topic/1001002/
请问quixote如何能更好的支持utf-8
2005-06-27 09:06:43 来自: dryice
我最近看mail list,
好象大家觉得quixote对utf-8的支持还不太好:
http://mail.mems-exchange.org/pipermail/quixote-users/2005-June/004871.html
不过显然豆瓣已经很好的解决了这个问题 :)
能不能请阿北兄介绍一下在 quixote 里面用 utf-8有哪些需要注意的问题?
谢谢!
2005-06-27 11:47:58 阿北 (北京)
你引的讨论里其实用的是u'unicode', 不是utf-8。直接用unicode的确问题很多,豆瓣有过一版是那样的,太麻烦,后来放弃了。
用utf-8就没有什么的问题, 因为utf-8的字串就是普通的str类。你只需要:
1. 用一个utf-8编码的编辑器编辑ptl, 并且在ptl或者有关的.py文件里加
# -*- coding: utf-8 -*-
2. 把html的header设好:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3. 在合适的地方(比如根url的_q_access. 我是在Publisher的start_request里)加上:
request.response.set_content_type('text/html; charset=utf-8')
就好了。
如果你用数据库的话,需要注意一下varchar或者text的编码,还有往来数据库api里的编码。
就这些了。
无论你觉得简单还是麻烦,今天做网站已经没有理由舍弃utf-8去用gb2312.
2005-06-28 08:34:58 仨儿 (北京)
是也乎!Unicode 是王道哪!
其实Python 在处理一切非ASII 码时就是以Unicode 格式处理的,
说白了 Unicode 是编码的字节码状态,utf8 utf16 gb1803 gb1312 等等,都是unicode 的编码存储格式,只是现在所有浏览器都支持utf8 的时候,没有理由使用gb2312 来拒绝国际浏览者是也乎…………
2005-06-28 21:46:41 dryice
好象阿北兄用的是1.x ?
我在用2.0,好象有点不一样
让我再看一看...
另外我原来以为只要设了 response 的 charset 就好了
为什么还要在<head>里写那行<meta> ?
2005-06-30 11:17:45 dryice
2.0 里面我一用 set_charset('utf-8')
就会出一个UnicodeEncodeError
晕。 刚才一气之下把quixote里面的所有iso-8859-1换成了utf-8
不知道会不会有问题
现在已经可以在PTL里面写中文了
正在调数据库
再问个问题:
如果我一个有form的页, charset是utf-8
是不是返回的内容就是utf-8的了?
我想这个工作是浏览器的吧?
2005-07-02 02:28:04 阿北 (北京)
form是这样。
出UnicodeEncodeError应该是你在ptl的什么地方用了u'...', 或者用了decode('utf-8')。
<head>里<meta>一定要写。这两个就像信封和信纸,都需要charset.
2005-07-03 23:22:29 dryice
多谢。看了这篇文章:
http://www.onlamp.com/pub/a/python/excerpt/pythonckbk_chap1/
我决定还是先用u'unicode'这样的试试
目前看起来还好 :)
Quixote对unicode的处理,目前不知道有没有完全搞定,之前PTL文件里title如果是中文会报错:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 46: ordinal not in range(128)
把quixote目录下的__init__.py中DEFAULT_CHARSET从iso-8859-1改为utf-8。
http_request.py中的iso-8859-1改为utf-8。(这个不改好像也没事?)
在Python的lib/site-packages/目录下新建一个文件sitecustomize.py:
import
sys
sys.setdefaultencoding( ' utf-8 ' )
sys.setdefaultencoding( ' utf-8 ' )
(参考: http://hi.baidu.com/dushm/blog/item/95597acb5373431dbe09e6af.html)
现在不报错了,不知道会不会再碰到错误。
转载一篇讨论Quixote处理unicode的豆瓣文章:
http://www.douban.com/group/topic/1001002/
请问quixote如何能更好的支持utf-8
2005-06-27 09:06:43 来自: dryice
我最近看mail list,
好象大家觉得quixote对utf-8的支持还不太好:
http://mail.mems-exchange.org/pipermail/quixote-users/2005-June/004871.html
不过显然豆瓣已经很好的解决了这个问题 :)
能不能请阿北兄介绍一下在 quixote 里面用 utf-8有哪些需要注意的问题?
谢谢!
2005-06-27 11:47:58 阿北 (北京)
你引的讨论里其实用的是u'unicode', 不是utf-8。直接用unicode的确问题很多,豆瓣有过一版是那样的,太麻烦,后来放弃了。
用utf-8就没有什么的问题, 因为utf-8的字串就是普通的str类。你只需要:
1. 用一个utf-8编码的编辑器编辑ptl, 并且在ptl或者有关的.py文件里加
# -*- coding: utf-8 -*-
2. 把html的header设好:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3. 在合适的地方(比如根url的_q_access. 我是在Publisher的start_request里)加上:
request.response.set_content_type('text/html; charset=utf-8')
就好了。
如果你用数据库的话,需要注意一下varchar或者text的编码,还有往来数据库api里的编码。
就这些了。
无论你觉得简单还是麻烦,今天做网站已经没有理由舍弃utf-8去用gb2312.
2005-06-28 08:34:58 仨儿 (北京)
是也乎!Unicode 是王道哪!
其实Python 在处理一切非ASII 码时就是以Unicode 格式处理的,
说白了 Unicode 是编码的字节码状态,utf8 utf16 gb1803 gb1312 等等,都是unicode 的编码存储格式,只是现在所有浏览器都支持utf8 的时候,没有理由使用gb2312 来拒绝国际浏览者是也乎…………
2005-06-28 21:46:41 dryice
好象阿北兄用的是1.x ?
我在用2.0,好象有点不一样
让我再看一看...
另外我原来以为只要设了 response 的 charset 就好了
为什么还要在<head>里写那行<meta> ?
2005-06-30 11:17:45 dryice
2.0 里面我一用 set_charset('utf-8')
就会出一个UnicodeEncodeError
晕。 刚才一气之下把quixote里面的所有iso-8859-1换成了utf-8
不知道会不会有问题
现在已经可以在PTL里面写中文了
正在调数据库
再问个问题:
如果我一个有form的页, charset是utf-8
是不是返回的内容就是utf-8的了?
我想这个工作是浏览器的吧?
2005-07-02 02:28:04 阿北 (北京)
form是这样。
出UnicodeEncodeError应该是你在ptl的什么地方用了u'...', 或者用了decode('utf-8')。
<head>里<meta>一定要写。这两个就像信封和信纸,都需要charset.
2005-07-03 23:22:29 dryice
多谢。看了这篇文章:
http://www.onlamp.com/pub/a/python/excerpt/pythonckbk_chap1/
我决定还是先用u'unicode'这样的试试
目前看起来还好 :)