Comments
Patch
@@ -427,16 +427,31 @@ class p4client(object):
e = os.environ.get("P4CHARSET")
if e:
return emap.get(e,e)
- return self.ui.config('perfarce', 'encoding', None)
+ return self.ui.config('perfarce', 'encoding', 'utf-8')
+
+ @propertycache
+ def fallbackencoding(self):
+ return self.ui.config('perfarce', 'fallbackencoding', None)
def decode(self, text):
'decode text in p4 character set as utf-8'
- if self.encoding:
+ try:
+ text = text.decode(self.encoding)
+ except LookupError, e:
+ raise error.Abort("%s, please check your locale settings" % e)
+ except UnicodeDecodeError:
+ if not self.fallbackencoding:
+ raise
+
try:
- return text.decode(self.encoding).encode(encoding.encoding)
+ text = text.decode(self.fallbackencoding)
except LookupError, e:
- raise error.Abort("%s, please check your locale settings" % e)
+ msg = "%s, please check your locale settings" % e
+ raise error.Abort(msg)
+
+ text = text.encode(encoding.encoding)
+
return text
def encode(self, text):