Update 2025-04-24_11:44:19
This commit is contained in:
		@ -0,0 +1,42 @@
 | 
			
		||||
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
 | 
			
		||||
		Reference in New Issue
	
	Block a user