mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	Forward port some fixes that were in email 2.5 but for some reason didn't make
it into email 4.0. Specifically, in Message.get_content_charset(), handle RFC 2231 headers that contain an encoding not known to Python, or a character in the data that isn't in the charset encoding. Also forward port the appropriate unit tests.
This commit is contained in:
		
							parent
							
								
									9815f8b252
								
							
						
					
					
						commit
						d92ae78bdb
					
				
					 3 changed files with 100 additions and 1 deletions
				
			
		|  | @ -747,7 +747,18 @@ def get_content_charset(self, failobj=None): | |||
|         if isinstance(charset, tuple): | ||||
|             # RFC 2231 encoded, so decode it, and it better end up as ascii. | ||||
|             pcharset = charset[0] or 'us-ascii' | ||||
|             charset = unicode(charset[2], pcharset).encode('us-ascii') | ||||
|             try: | ||||
|                 # LookupError will be raised if the charset isn't known to | ||||
|                 # Python.  UnicodeError will be raised if the encoded text | ||||
|                 # contains a character not in the charset. | ||||
|                 charset = unicode(charset[2], pcharset).encode('us-ascii') | ||||
|             except (LookupError, UnicodeError): | ||||
|                 charset = charset[2] | ||||
|         # charset character must be in us-ascii range | ||||
|         try: | ||||
|             charset = unicode(charset, 'us-ascii').encode('us-ascii') | ||||
|         except UnicodeError: | ||||
|             return failobj | ||||
|         # RFC 2046, $4.1.2 says charsets are not case sensitive | ||||
|         return charset.lower() | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Barry Warsaw
						Barry Warsaw