os.listdir() 返回奇怪的韩语值(编码问题)。

问题描述 投票:1回答:1

我有一个文件夹,它的名字包含了一些韩文字符。

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

例如

  • 从os.listdir()中获取一个韩文文件夹名:"nbspnbsp"=(\xe1\x84\x82\xe1\x85\xae)
  • 纯字符串 "nbspnbsp",在python中的 console = (\xeb\x88\x84)

我们可以从以下几个方面来估计: 1. os.listdir() 给人以混乱的编码...

python python-3.x encoding decoding listdir
1个回答
2
投票

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

"nbsp"=(xe1/x84/x82/xe1/x85/xae)

这表示该字由两个jamo(韩文(hangeul)字母的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'

"nbsp "在Python控制台中=(\xeb\x88\x84)

而当你在控制台窗口中实际输入字符时,你(显然)得到的是一个预先合成的字符。

>>> z = b'\xeb\x88\x84'.decode('utf-8')
>>> unicodedata.name(z)
'HANGUL SYLLABLE NU'
© www.soinside.com 2019 - 2024. All rights reserved.