首页 > 解决方案 > os.listdir() 返回奇怪的韩语值(编码问题)

问题描述

我有文件夹,它的名称包含几个韩语字符。

当我读取文件夹名称列表时os.listdir,它的名称值与普通字符串完全不同。

例子:

有什么区别?我们可以估计它是由于os.listdir()混淆了一些编码..

标签: pythonunicodelistdir

解决方案


这两者都是相同的编码(UTF-8),但是......

"누" = (\xe1\x84\x82\xe1\x85\xae)

这表示由两个 jamo(韩文(韩文)字母表的 24 个组成部分)组成的字符:

>>> import unicodedata
>>> x = b'\xe1\x84\x82'.decode('utf-8')
>>> y = b'\xe1\x85\xae'.decode('utf-8')
>>> unicodedata.name(x)
'HANGUL CHOSEONG NIEUN'
>>> unicodedata.name(y)
'HANGUL JUNGSEONG U'

python 控制台中的“누” = (\xeb\x88\x84)

而当您在控制台窗口中实际键入字符时,您(显然)会得到一个预先组合的字符:

>>> z = b'\xeb\x88\x84'.decode('utf-8')
>>> unicodedata.name(z)
'HANGUL SYLLABLE NU'

推荐阅读