2007年05月26日 星期六 08:08
Django svn, Windows 2000, Sqlite3, Python2.5 为什么会有Unicode的问题? #test.py # -*- coding: utf-8 -*- import sys import string from django.core.management import setup_environ def execute_from_command_line(): from django.core.management import setup_environ sys.path.append("d:/") try: from teamware_work import settings except ImportError: print "You don't appear to have a settings file in this directory!" print "Please run this from inside a project directory" sys.exit() setup_environ(settings) inputcity() def inputcity(): from teamware_work.dailywork.models import City f = open('d:/teamware_work/cityall.txt') cityall = f.readlines() country = u"中国" for prov in cityall: city = string.split(prov) if len(city) < 2: city_tmp = City(city_name_cn=city[0], state_name_cn=city[0], country_name_cn=country, country_name_en="Chinese") city_tmp.save() else: for c in city[1:]: city_tmp = City(city_name_cn=c, state_name_cn=city[0], country_name_cn=country, country_name_en="Chinese") city_tmp.save() if __name__ == "__main__": execute_from_command_line() ########################################## # settings.py # Django settings for teamware project. DEBUG = True TEMPLATE_DEBUG = DEBUG ADMINS = ( ('Ben Luo', 'benluo在gmail.com'), ) MANAGERS = ADMINS DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. DATABASE_NAME = 'd:/teamware_work/team.db' # Or path to database file if using sqlite3. DATABASE_USER = '' # Not used with sqlite3. DATABASE_PASSWORD = '' # Not used with sqlite3. DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. # Local time zone for this installation. Choices can be found here: # http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE # although not all variations may be possible on all operating systems. # If running in a Windows environment this must be set to the same as your # system time zone. TIME_ZONE = 'Asia/Shanghai' # Language code for this installation. All choices can be found here: # http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes # http://blogs.law.harvard.edu/tech/stories/storyReader$15 LANGUAGE_CODE = 'zh_CN' SITE_ID = 1 # If you set this to False, Django will make some optimizations so as not # to load the internationalization machinery. USE_I18N = True # Absolute path to the directory that holds media. # Example: "/home/media/media.lawrence.com/" MEDIA_ROOT = '' # URL that handles the media served from MEDIA_ROOT. # Example: "http://media.lawrence.com" MEDIA_URL = '' # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a # trailing slash. # Examples: "http://foo.com/media/", "/media/". ADMIN_MEDIA_PREFIX = '/media/' # Make this unique, and don't share it with anybody. SECRET_KEY = 'e在3#qvplv=%hz81t_#^*c$41*oktt7tt(_在m&wu;(vq6i&3t(13' # List of callables that know how to import templates from various sources. TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.load_template_source', 'django.template.loaders.app_directories.load_template_source', # 'django.template.loaders.eggs.load_template_source', ) MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.doc.XViewMiddleware', ) ROOT_URLCONF = 'teamware_work.urls' TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. # "d:/basf/project/teamware_work/templates", ) INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.databrowse', 'teamware_work.dailywork', ) ######################################### #dailywork/models.py from django.db import models class City(models.Model): city_name_en = models.CharField(maxlength=55) city_name_cn = models.CharField(maxlength=55) state_name_en = models.CharField(maxlength=55) state_name_cn = models.CharField(maxlength=55) country_name_en = models.CharField(maxlength=55) country_name_cn = models.CharField(maxlength=55) ################ #error d:\teamware_work>python test.py python test.py Traceback (most recent call last): File "test.py", line 42, inexecute_from_command_line() File "test.py", line 20, in execute_from_command_line inputcity() File "test.py", line 33, in inputcity city_tmp.save() File "c:\python25\lib\site-packages\django\db\models\base.py", line 243, in save ','.join(placeholders)), db_values) File "c:\python25\lib\site-packages\django\db\backends\util.py", line 20, in execute 'sql': sql % params, UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 138: ordinal not in range(128) ‣ About this site -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070526/8d01eb53/attachment.html
2007年05月26日 星期六 08:37
可能和 country_name_cn是一个unicode有关,不要前面的u试试。django一般不需要你直接使用unicode(不过现在有一个unicode版本),你只要使用DEFAULT_CHARSET相同编码的字符串应该就可以了。 -- I like python! UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou
2007年05月26日 星期六 10:04
自问自答一下。 在 test.py 中改成 country = u"中国".encode("utf-8") 就可以了。 On 5/26/07, Ben Luo <benluo在gmail.com> wrote: > > Django svn, Windows 2000, Sqlite3, Python2.5 > > 为什么会有Unicode的问题? > > #test.py > > # -*- coding: utf-8 -*- > > import sys > import > string > > from django.core.management import setup_environ > > def execute_from_command_line > (): > from django.core.management import setup_environ > sys.path.append("d:/") > > > try: > from teamware_work import settings > except > ImportError: > print "You don't appear to have a settings file in this directory!" > print > "Please run this from inside a project directory" > sys.exit() > > > setup_environ(settings) > inputcity() > > def > inputcity(): > from teamware_work.dailywork.models import City > > > f = open('d:/teamware_work/cityall.txt') > cityall > = f.readlines() > country = u"中国" > for prov in cityall: > city > = string.split(prov) > if > len(city) < 2: > city_tmp > = City(city_name_cn=city[0], > state_name_cn=city[0], > country_name_cn > =country, country_name_en="Chinese") > > city_tmp.save() > else: > for > c in city[1:]: > city_tmp = > City(city_name_cn=c, state_name_cn=city > [0], > country_name_cn=country > , country_name_en="Chinese") > city_tmp. > save() > > > if __name__ == "__main__": > > execute_from_command_line() > > ########################################## > # settings.py > # Django settings for teamware project. > > > DEBUG = True > TEMPLATE_DEBUG = DEBUG > > ADMINS > = ( > ('Ben Luo', 'benluo在gmail.com > '), > ) > > MANAGERS = ADMINS > > DATABASE_ENGINE > = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. > DATABASE_NAME > = 'd:/teamware_work/team.db' # Or path to database file if using sqlite3. > DATABASE_USER > = '' # Not used with sqlite3. > DATABASE_PASSWORD = '' > # Not used with sqlite3. > DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. > DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. > > # Local time zone for this installation. Choices can be found here: > > # http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE > > # although not all variations may be possible on all operating systems. > # If running in a Windows environment this must be set to the same as your > > # system time zone. > TIME_ZONE = 'Asia/Shanghai' > > # Language code for this installation. All choices can be found here: > > # http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes > # > http://blogs.law.harvard.edu/tech/stories/storyReader$15 > LANGUAGE_CODE = 'zh_CN' > > SITE_ID > = 1 > > # If you set this to False, Django will make some optimizations so as not > # to load the internationalization machinery. > > USE_I18N = True > > # Absolute path to the directory that holds media. > # Example: "/home/media/media.lawrence.com/" > > MEDIA_ROOT = '' > > # URL that handles the media served from MEDIA_ROOT. > # Example: " > http://media.lawrence.com" > MEDIA_URL = '' > > # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a > > # trailing slash. > # Examples: "http://foo.com/media/", "/media/". > ADMIN_MEDIA_PREFIX > = '/media/' > > # Make this unique, and don't share it with anybody. > SECRET_KEY = > 'e在3#qvplv=%hz81t_#^*c$41*oktt7tt(_在m&wu;(vq6i&3t(13' > > # List of callables that know how to import templates from various sources. > TEMPLATE_LOADERS > = ( > 'django.template.loaders.filesystem.load_template_source', > 'django.template.loaders.app_directories.load_template_source > ', > # 'django.template.loaders.eggs.load_template_source', > ) > > MIDDLEWARE_CLASSES > = ( > 'django.middleware.common.CommonMiddleware', > 'django.contrib.sessions.middleware.SessionMiddleware' > , > 'django.contrib.auth.middleware.AuthenticationMiddleware', > 'django.middleware.doc.XViewMiddleware' > , > ) > > ROOT_URLCONF = 'teamware_work.urls' > > TEMPLATE_DIRS > = ( > # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". > # Always use forward slashes, even on Windows. > > # Don't forget to use absolute paths, not relative paths. > # "d:/basf/project/teamware_work/templates", > ) > > > INSTALLED_APPS = ( > 'django.contrib.auth', > 'django.contrib.contenttypes', > 'django.contrib.sessions', > 'django.contrib.sites', > > 'django.contrib.databrowse', > 'teamware_work.dailywork', > ) > > ######################################### > > #dailywork/models.py > > from django.db import models > > class > City(models.Model): > city_name_en = > models.CharField(maxlength=55) > > city_name_cn = models.CharField(maxlength= > 55) > state_name_en = models.CharField( > maxlength=55) > state_name_cn = models. > CharField(maxlength=55) > country_name_en = > models.CharField(maxlength=55) > > country_name_cn = models.CharField(maxlength= > 55) > > ################ > #error > > d:\teamware_work > >python test.py > python test.py > Traceback (most recent call last): > > File "test.py", line 42, in < > module> > execute_from_command_line() > File "test.py", > line 20, in execute_from_command_line > inputcity() > > File "test.py", line 33, in inputcity > > city_tmp.save() > File "c:\python25\lib\site-packages\django\db\models > \base.py", line 243, in save > ','.join(placeholders)), db_values > ) > File "c:\python25\lib\site-packages\django\db\backends\util.py", > line 20, in execute > 'sql': sql > % params, > UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 138: ordinal not in range(128) > > ‣ About this site <http://about/> > > -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070526/5c310685/attachment-0001.html
2007年05月26日 星期六 10:25
> > 在 test.py 中改成 > > country = u"中国".encode("utf-8") > > 就可以了。 晕 这和直接写 "中国" 不一样嘛。 -- http://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070526/fb03008b/attachment.htm
2007年05月26日 星期六 10:40
On 5/26/07, »ÆÒã <yi.codeplayer在gmail.com> wrote: > > ÔÚ test.py ÖÐ¸Ä³É > > > > country = u"Öйú".encode("utf-8") > > > > ¾Í¿ÉÒÔÁË¡£ > > > ÔÎ ÕâºÍÖ±½Óд "Öйú" ²»Ò»ÑùÂï¡£ > ÒòΪ¶ÔunicodeµÄÀí½â²»Éî¡£·¢ÁËÌû×Ӳŷ¢ÏÖºÍÄã˵µÄÒ»Ñù¡£×Ô¼º´ÀÁËÒ»°Ñ -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070526/db2d4f55/attachment.html
2007年05月26日 星期六 11:18
用 chunk 的人可以考虑 http://code.djangoproject.com/wiki/UnicodeBranch 分支了。 Unicode-branch: testers wanted<http://groups.google.com/group/django-users/t/fe48a0b635f59ee> On 5/26/07, Ben Luo <benluo at gmail.com> wrote: > > Django svn, Windows 2000, Sqlite3, Python2.5 > > 为什么会有Unicode的问题? > > #test.py > > # -*- coding: utf-8 -*- > > import sys > import > string > > from django.core.management import setup_environ > > def execute_from_command_line(): > from django.core.management import setup_environ > sys.path.append("d:/") > > > try: > from teamware_work import settings > except > ImportError: > print "You don't appear to have a settings file in this directory!" > print > "Please run this from inside a project directory" > sys.exit() > > > setup_environ(settings) > inputcity() > > def > inputcity(): > from teamware_work.dailywork.models import City > > f = open('d:/teamware_work/cityall.txt') > cityall = f.readlines() > country = u"中国" > for prov in cityall: > city = string.split(prov) > if > len(city) < 2: > city_tmp > = City(city_name_cn=city[0], state_name_cn=city[0], > country_name_cn=country, country_name_en="Chinese") > city_tmp.save() > else: > for > c in city[1:]: > city_tmp = > City(city_name_cn=c, state_name_cn=city[0], > country_name_cn=country > , country_name_en="Chinese") > city_tmp. > save() > > > if __name__ == "__main__": > execute_from_command_line() > > ########################################## > # settings.py > # Django settings for teamware project. > > DEBUG = True > TEMPLATE_DEBUG = DEBUG > > ADMINS = ( > ('Ben Luo', ' > benluo at gmail.com'), > ) > > MANAGERS = ADMINS > > DATABASE_ENGINE > = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. > DATABASE_NAME = 'd:/teamware_work/team.db' # Or path to database file if using sqlite3. > DATABASE_USER > = '' # Not used with sqlite3. > DATABASE_PASSWORD = '' > # Not used with sqlite3. > DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. > DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. > > # Local time zone for this installation. Choices can be found here: > # http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE > # although not all variations may be possible on all operating systems. > # If running in a Windows environment this must be set to the same as your > > # system time zone. > TIME_ZONE = 'Asia/Shanghai' > > # Language code for this installation. All choices can be found here: > # http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes > # > http://blogs.law.harvard.edu/tech/stories/storyReader$15 > LANGUAGE_CODE = 'zh_CN' > > SITE_ID > = 1 > > # If you set this to False, Django will make some optimizations so as not > # to load the internationalization machinery. > > USE_I18N = True > > # Absolute path to the directory that holds media. > # Example: "/home/media/media.lawrence.com/" > MEDIA_ROOT = '' > > # URL that handles the media served from MEDIA_ROOT. > # Example: "http://media.lawrence.com" > MEDIA_URL = '' > > # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a > # trailing slash. > # Examples: "http://foo.com/media/", "/media/". > ADMIN_MEDIA_PREFIX > = '/media/' > > # Make this unique, and don't share it with anybody. > SECRET_KEY = > 'e at 3#qvplv=%hz81t_#^*c$41*oktt7tt(_ at m&wu;(vq6i&3t(13' > > # List of callables that know how to import templates from various sources. > TEMPLATE_LOADERS > = ( > 'django.template.loaders.filesystem.load_template_source', > 'django.template.loaders.app_directories.load_template_source > ', > # 'django.template.loaders.eggs.load_template_source', > ) > > MIDDLEWARE_CLASSES > = ( > 'django.middleware.common.CommonMiddleware', > 'django.contrib.sessions.middleware.SessionMiddleware', > 'django.contrib.auth.middleware.AuthenticationMiddleware', > 'django.middleware.doc.XViewMiddleware', > ) > > ROOT_URLCONF = 'teamware_work.urls' > > TEMPLATE_DIRS > = ( > # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". > # Always use forward slashes, even on Windows. > # Don't forget to use absolute paths, not relative paths. > # "d:/basf/project/teamware_work/templates", > ) > > > INSTALLED_APPS = ( > 'django.contrib.auth', > 'django.contrib.contenttypes', > 'django.contrib.sessions', > 'django.contrib.sites', > > 'django.contrib.databrowse', > 'teamware_work.dailywork', > ) > > ######################################### > #dailywork/models.py > > from django.db import models > > class > City(models.Model): > city_name_en = > models.CharField(maxlength=55) > > city_name_cn = models.CharField(maxlength= > 55) > state_name_en = models.CharField( > maxlength=55) > state_name_cn = models. > CharField(maxlength=55) > country_name_en = > models.CharField(maxlength=55) > > country_name_cn = models.CharField(maxlength= > 55) > > ################ > #error > > d:\teamware_work > >python test.py > python test.py > Traceback (most recent call last): > > File "test.py", line 42, in < > module> > execute_from_command_line() > File "test.py", > line 20, in execute_from_command_line > inputcity() > > File "test.py", line 33, in inputcity > city_tmp.save() > File "c:\python25\lib\site-packages\django\db\models\base.py", line 243, in save > ','.join(placeholders)), db_values > ) > File "c:\python25\lib\site-packages\django\db\backends\util.py", > line 20, in execute > 'sql': sql > % params, > UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 138: ordinal not in range(128) > > ‣ About this site <http://about/> > > > _______________________________________________ > 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://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070526/06db7a36/attachment-0001.htm
2007年05月26日 星期六 11:27
> > django一般不需要你直接使用unicode(不过现在有一个unicode版本), Unicode 分支也不是说用户代码一定要使用unicode,不过 django 内部一律都用 unicode 交流。 Note that we are not trying to switch to forcing everybody to *only* use unicode strings. You will also be able to pass around bytestrings and Django will assume they are UTF-8 encoded<http://code.djangoproject.com/wiki/UnicodeBranch> -- http://codeplayer.blogspot.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070526/3b1e0d8a/attachment.html
Zeuux © 2025
京ICP备05028076号