KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
It throws out "UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 2: ordinal not in range(128)" when executing following code: filename = 'Spywaj.ttf' print repr(filename) >> 'Sp\xc2\x88ywaj.ttf' filepath = os.path.join('/dirname', filename) But the file is valid and existed on disk. Filename was extracted from "unzip -l" command. How can join filenames like this? OS and filesystem Filesystem: ext3 relatime,errors=remount-ro 0 0 Locale: en_US.UTF-8 Alex's suggestion os.path.join works now but I still cannot access the file on disk with the filename it joined. filename = filename.decode('utf-8') filepath = os.path.join('/dirname', filename) print filepath >> /dirname/u'Sp\xc2\x88ywaj.ttf' print os.path.isfile(filepath) >> False new_filepath = filepath.encode('Latin-1').encode('utf-8') print new_filepath >> /dirname/u'Sp\xc2\x88ywaj.ttf' print type(filepath) >> <type 'unicode'> print os.path.isfile(new_filepath) >> False valid_filepath = glob.glob('/dirname/*.ttf')[0] print valid_filepath >> /dirname/Spywaj.ttf (SO cannot display the chars in filename) print type(valid_filepath) >> <type 'str'> print os.path.isfile(valid_filepath) >> True
Tags (comma-separated)
Save Edits
Cancel