508: Can't post diffs containing 8-bit (non-ascii) characters
- Fixed
- Review Board
sqr***@gmai***** (Google Code) (Is this you? Claim this profile.) | |
Sept. 23, 2008 |
What's the URL of the page containing the problem? Error while uploading diff, either with post-review or via attach diff function in UI. Debug output from post-review: Error uploading diff: One or more fields had errors (105) >>> {u'fields': {u'path': [u"'ascii' codec can't decode byte 0x91 in position 10 24: ordinal not in range(128)"]}, u'stat': u'fail', u'err': {u'msg': u'One or mo re fields had errors', u'code': 105}} Your review request still exists, but the diff is not attached. What steps will reproduce the problem? 1. Edit a file, insert a non-ascii character (in this case, 0x91) 2. Post review request for diff 3. What is the expected output? What do you see instead? Expect files to be uploaded correctly. What operating system are you using? What browser? Widows XP for client Ubuntu/Linux for server Please provide any additional information below. Tried updating post-review to set Content-Transfer-Encoding to 8bit and tried utf-8 charset as well, but they seemed to be ignored by server. Not familiar enough with Python & Django to suggest a fix.
What revision are you using of Django? Can you attach a full traceback? (Be sure to filter out any sensitive info.)
-
+ NeedInfo
I had the same experience, adding a traceback: 'ascii' codec can't decode byte 0xc2 in position 92: ordinal not in range(128) Traceback (most recent call last): File "/var/www/reviewboard/diffviewer/views.py", line 82, in view_diff files = get_diff_files(diffset, None, interdiffset, highlighting) File "/var/www/reviewboard/diffviewer/diffutils.py", line 599, in get_diff_files enable_syntax_highlighting) File "/var/www/reviewboard/diffviewer/diffutils.py", line 518, in generate_files lambda: get_chunks(filediff.diffset, File "/var/www/reviewboard/djblets/util/misc.py", line 49, in cache_memoize data = lookup_callable() File "/var/www/reviewboard/diffviewer/diffutils.py", line 521, in <lambda> enable_syntax_highlighting)) File "/var/www/reviewboard/diffviewer/diffutils.py", line 394, in get_chunks a[i1:i2], b[j1:j2], oldlines, newlines) File "/var/www/reviewboard/diffviewer/diffutils.py", line 245, in diff_line if oldline and newline and oldline != newline: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 92: ordinal not in range(128) The review has been generated by post-review SVN Rev. 1390. The character cauing the error is a paragraph sign '§' which has been replaced in the newer file version. Django is from the trunk SVN-Rev. 7877
If you can generate a diff against reviews.review-board.org that reproduces this, it would greatly help.
-
- Priority-Medium + Priority-High + Component-DiffParser
BTW, for me this problem went away after updating django. Didn't check which revision I'm on, but newer versions seem to handle this correctly.
Excellent. I was hoping to hear that. roland, what about you? I'll probably close this out soon unless you're still hitting this.