--- a/Allura/allura/lib/helpers.py
+++ b/Allura/allura/lib/helpers.py
@@ -39,22 +39,23 @@
return patchit
def really_unicode(s):
+ # try naive conversion to unicode
try:
return unicode(s)
except UnicodeDecodeError:
pass
- encoding = chardet.detect(s[:1024])['encoding']
- try:
- if encoding:
- return unicode(s, encoding)
- except UnicodeDecodeError:
- pass
- encoding = chardet.detect(s)['encoding']
- try:
- if encoding:
- return unicode(s, encoding)
- except UnicodeDecodeError:
- pass
+ # Try to guess the encoding
+ encodings = [
+ lambda:'utf-8',
+ lambda:'latin-1',
+ lambda:chardet.detect(s[:1024])['encoding'],
+ lambda:chardet.detect(s)['encoding'] ]
+ for enc in encodings:
+ try:
+ return unicode(s, enc())
+ except UnicodeDecodeError:
+ pass
+ # Return the repr of the str -- should always be safe
return unicode(repr(str(s)))[1:-1]
def find_project(url_path):