UTF-8 and os.listdir()

3

我在处理一个包含“ș”字符的文件时遇到了一些问题(在UTF-8中是\xC8\x99 - 带有逗号下方的LATIN SMALL LETTER S)。

我正在创建一个名为ș.txt的文件,并尝试通过os.listdir()获取它。不幸的是,os.listdir()返回的结果是s\xCC\xA6("s" + COMBINING COMMA BELOW),而我的测试程序(如下所示)失败了。

这种情况发生在我的OS X上,但在Linux机器上却可以正常工作。你知道是什么原因导致了这种行为吗?(两个环境都使用LANG=en_US.UTF8进行配置)?

这是测试程序:

#coding: utf-8
import os

fname = "ș.txt"
with open(fname, "w") as f:
    f.write("hi")

files = os.listdir(".")
print "fname: ", fname
print "files: ", files

if fname in files:
    print "found"
else:
    print "not found"
1个回答

10

@Unknown 你怎么做到的?我也遇到了这个问题。 - undefined
@NamPham:你具体要做什么?你遇到了什么问题?files列表将包含一系列已经规范化的Unicode字符串对象。 - undefined
我遇到了关于解码和编码过程的问题,我无法将u'.'作为listdir的参数。我的路径是Unicode :( - undefined
@MartijnPieters 谢谢你。 - undefined
Windows 10也适用吗? - undefined
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接