Spaces:
Runtime error
Runtime error
| import unicodedata | |
| import sys | |
| # HFS Plus uses decomposed UTF-8 | |
| def decompose(path): | |
| if isinstance(path, str): | |
| return unicodedata.normalize('NFD', path) | |
| try: | |
| path = path.decode('utf-8') | |
| path = unicodedata.normalize('NFD', path) | |
| path = path.encode('utf-8') | |
| except UnicodeError: | |
| pass # Not UTF-8 | |
| return path | |
| def filesys_decode(path): | |
| """ | |
| Ensure that the given path is decoded, | |
| NONE when no expected encoding works | |
| """ | |
| if isinstance(path, str): | |
| return path | |
| fs_enc = sys.getfilesystemencoding() or 'utf-8' | |
| candidates = fs_enc, 'utf-8' | |
| for enc in candidates: | |
| try: | |
| return path.decode(enc) | |
| except UnicodeDecodeError: | |
| continue | |
| def try_encode(string, enc): | |
| "turn unicode encoding into a functional routine" | |
| try: | |
| return string.encode(enc) | |
| except UnicodeEncodeError: | |
| return None | |