diff -ur trac-orig/Changeset.py trac/Changeset.py
|
old
|
new
|
|
| 200 | 200 | context = int(option[2:]) |
| 201 | 201 | break |
| 202 | 202 | tabwidth = int(self.config.get('diff', 'tab_width')) |
| 203 | | changes = hdf_diff(util.to_utf8(old_content).splitlines(), |
| 204 | | util.to_utf8(new_content).splitlines(), |
| | 203 | changes = hdf_diff(util.to_utf8(old_content,mimeview.get_charset(self, old_node)).splitlines(), |
| | 204 | util.to_utf8(new_content,mimeview.get_charset(self, new_node)).splitlines(), |
| 205 | 205 | context, tabwidth, |
| 206 | 206 | ignore_blank_lines='-B' in diff_options[1], |
| 207 | 207 | ignore_case='-i' in diff_options[1], |
| … |
… |
|
| 234 | 234 | new_content = old_content = '' |
| 235 | 235 | new_node_info = old_node_info = ('','') |
| 236 | 236 | if old_node: |
| 237 | | old_content = util.to_utf8(old_node.get_content().read()) |
| | 237 | old_content = util.to_utf8(old_node.get_content().read(),mimeview.get_charset(self, old_node)) |
| 238 | 238 | old_node_info = (old_node.path, old_node.rev) |
| 239 | 239 | if mimeview.is_binary(old_content): |
| 240 | 240 | continue |
| 241 | 241 | if new_node: |
| 242 | | new_content = util.to_utf8(new_node.get_content().read()) |
| | 242 | new_content = util.to_utf8(new_node.get_content().read(),mimeview.get_charset(self, new_node)) |
| 243 | 243 | new_node_info = (new_node.path, new_node.rev) |
| 244 | 244 | if old_content != new_content: |
| 245 | 245 | context = 3 |
diff -ur trac-orig/mimeview/api.py trac/mimeview/api.py
|
old
|
new
|
|
| 24 | 24 | |
| 25 | 25 | from trac.core import * |
| 26 | 26 | |
| 27 | | __all__ = ['get_mimetype', 'is_binary', 'Mimeview'] |
| | 27 | __all__ = ['get_mimetype', 'is_binary', 'Mimeview', 'get_charset'] |
| 28 | 28 | |
| 29 | 29 | MIME_MAP = { |
| 30 | 30 | 'css':'text/css', |
| … |
… |
|
| 99 | 99 | except: |
| 100 | 100 | return None |
| 101 | 101 | |
| | 102 | def get_charset(env, node): |
| | 103 | """Get charset for node content""" |
| | 104 | mime_type = node.content_type |
| | 105 | if not mime_type or mime_type == 'application/octet-stream': |
| | 106 | mime_type = get_mimetype(node.name) or mime_type or 'text/plain' |
| | 107 | ctpos = mime_type.find('charset=') |
| | 108 | if ctpos >= 0: |
| | 109 | charset = mime_type[ctpos + 8:] |
| | 110 | else: |
| | 111 | charset = env.config.get('trac', 'default_charset') |
| | 112 | return charset |
| | 113 | |
| 102 | 114 | def is_binary(str): |
| 103 | 115 | """ |
| 104 | 116 | Try to detect content by checking the first thousand bytes for zeroes. |