django取出pymongo中存储的中文图片路径后,读取该路径在网页上展示没有出现图片

qingyuanlu 发布于 2015/07/16 09:28
阅读 396
收藏 1

问题是这样的:

我搭建的环境是:python2.7 + mongoengine + pymongo + django + Ubuntu14

python处理一些带有中文路径的图片,把这个路径存储在数据库pymongo中,保存的时候该路径是转换为:utf-8类型存储到数据库中,然后django通过mongoengine来连接pymongo的数据库,从中取出这个图片的路径,

希望向各位朋友们请教一下下面的问题,十分感谢

1遍历这些图片的路径时,采用的是:os.walk()方法,调用如下:

1 def visitDir_walk(path , sFileSuffix):

 2   codedetect = chardet.detect(path)["encoding"]

 3   path = unicode(path , codedetect).encode("gbk")

 4   fileNames = list()

 5   for root,dirs,files in os.walk(path):

 6       for i in range(0 , len(files)):

 7           file = files[i]

 8           if file.endswith(sFileSuffix):

 9               sFileName =  os.path.join(root , file)

 10               codedetect = chardet.detect(sRealFileName)["encoding"]

 11               sRealFileName = unicode(sRealFileName , "gbk").encode("gbk")

 12               fileNames.append( sRealFileName )

 13   return fileNames

我发现:如果os.walk中传入的如果是unicode类型的中文路径,遍历报错,这是为什么?

如果在第11行中我改为: sRealFileName = unicode(sRealFileName , "gbk"),也会报错

 

2经过chardet模块分析之后:该路径变成了unicode类型,而且编码方式为ascii,这一点很奇怪,因为存储的时候:

picture = {}

picture["path"] = unicode(picPath, "gbk").encode("utf-8")

已经将获取的图片路径转换为utf-8str类型的路径,但是从数据库拿出来却变成了asciiunicode类型的路径

 

3取出的这个图片路径在django网页展示时,图片不显示,我猜想很可能是和图片的路径中带有中文有关,但我即使对取出的图片路径unicode类型的路径,转换为utf-8或者gbk,再展示该图片,还是无法显示。我也尝试不对该路径做任何编码转换,图片仍然不显示。

 

恳请各位朋友们指点一下,回答一下这三个问题,被中文路径折磨了1个月,仍然没有解决这个问题。

在此先提前感谢各位朋友。

加载中
返回顶部
顶部