From 03ec6423c4850b141730333be4898858e0d45068 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Mon, 25 Jun 2007 13:46:01 +0000 Subject: [PATCH] unicode: A different version of [5532], based on feedback from Windows users in far away countries. git-svn-id: http://code.djangoproject.com/svn/django/branches/unicode@5534 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/utils/tzinfo.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/django/utils/tzinfo.py b/django/utils/tzinfo.py index 8a1a887346..0c85735941 100644 --- a/django/utils/tzinfo.py +++ b/django/utils/tzinfo.py @@ -1,9 +1,12 @@ "Implementation of tzinfo classes for use with datetime.datetime." +import locale import time from datetime import timedelta, tzinfo from django.utils.encoding import smart_unicode +DEFAULT_ENCODING = locale.getdefaultlocale()[1] + class FixedOffset(tzinfo): "Fixed offset in minutes east from UTC." def __init__(self, offset): @@ -26,7 +29,7 @@ class LocalTimezone(tzinfo): "Proxy timezone information from time module." def __init__(self, dt): tzinfo.__init__(self, dt) - self._tzname = smart_unicode(time.tzname[self._isdst(dt)]) + self._tzname = self.tzname(dt) def __repr__(self): return self._tzname @@ -44,7 +47,10 @@ class LocalTimezone(tzinfo): return timedelta(0) def tzname(self, dt): - return unicode(time.tzname[self._isdst(dt)]) + try: + return smart_unicode(time.tzname[self._isdst(dt)], DEFAULT_ENCODING) + except UnicodeDecodeError: + return None def _isdst(self, dt): tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, -1)