3399: v2.0.1, RB throws LookupError in convert_to_unicode for ISO-8859 with CRLF file

bruce*****@gmai***** (Google Code) (Is this you? Claim this profile.)
June 6, 2014
What version are you running?
2.0.1

What's the URL of the page containing the problem?
https://reviews/r/40567/

What steps will reproduce the problem?
1. Click View Diff

What is the expected output? What do you see instead?
The diff should be displayed. Instead, a error message is shown.

What operating system are you using? What browser?
Windows 8.1 with Firefox 29.0.1.

Please provide any additional information below.
With a text file that the 'file' utility identifies as "ISO-8859 English text, with CRLF line terminators", Review Board throws a LookupError when trying to display the diff.

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/diffviewer/views.py", line 236, in get
    renderer = self.create_renderer(context, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/reviews/views.py", line 1102, in create_renderer
    *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/diffviewer/views.py", line 326, in create_renderer
    self.diff_file = self._get_requested_diff_file()
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/diffviewer/views.py", line 367, in _get_requested_diff_file
    request=self.request)
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/diffviewer/diffutils.py", line 373, in populate_diff_chunks
    chunks = generator.get_chunks()
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/diffviewer/chunk_generator.py", line 148, in get_chunks
    large_data=True)
  File "/usr/local/lib/python2.7/dist-packages/Djblets-0.8.2-py2.7.egg/djblets/cache/backend.py", line 109, in cache_memoize
    data = lookup_callable()
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/diffviewer/chunk_generator.py", line 147, in <lambda>
    lambda: list(self._get_chunks_uncached()),
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/diffviewer/chunk_generator.py", line 154, in _get_chunks_uncached
    old = get_original_file(self.filediff, self.request, encoding_list)
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/diffviewer/diffutils.py", line 172, in get_original_file
    encoding, data = convert_to_unicode(data, encoding_list)
  File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.1-py2.7.egg/reviewboard/diffviewer/diffutils.py", line 50, in convert_to_unicode
    return e, six.text_type(s, e)
LookupError: unknown encoding:

The repository doesn't have any special encodings configured.
#1 bruce*****@gmai***** (Google Code) (Is this you? Claim this profile.)
The file contains a section symbol '§' which is probably causing the problem, since it's non-ascii.
#2 bruce*****@gmai***** (Google Code) (Is this you? Claim this profile.)
Overriding the encoding to be utf-8 appears to have fixed (worked around?) the problem.
david
#3 david
Fixed in release-2.0.x (d4c4887). Thanks!
  • +Fixed