zoukankan      html  css  js  c++  java
  • ntpath join(path, *paths) 发生UnicodeDecodeError的Bug的解决方案

      最近在学习用Python开发web,使用的是web框架,在win8.1平台下安装SAE和Flask的时候总是在ntpath.py这个UnicodeDecodeError模块报错。

    84行 result_path = result_path+ p_path

      显示的错误就是UnicodeDecodeError ascii/unicode can not decode 0xc3 range 128的错误。在安装SAE的时候也遇到这个错误了,找到错误的原因是我的User名是中文,中文unicode码是xc3xf8。

      Unicode码encode的时候把这个路径名强制认为是两个ascii码,不能超过128所以导致了这个错误。

      这时候我想使用unicode()强制将两个字符串转为unicode也可不可以呢,还是不行,因为unicode()的操作是将ascill扩展为unicode码,同样会验证是否是有效的asill码,还是报了UnicodeDecodeError的错误unicode can not decode 0xc3 range 128。

      result_path = unicode(result_path) + unicode(p_path)

      这时候我就想到怎么不让它验证呢,试了下str()这个函数将两个码全都转为str类型

      result_path = str(result_path) + str(p_path)

      这个时候错误就没有出现,工作正常,因为将unicode码转为str类型不会验证ascill码,而是会将其转为两个八位的char(只是说法,py没有char类型)

      

      >>> a='你好'
      >>> a[0]
      'xc4'

      >>> a
      'xc4xe3xbaxc3'
      >>> type(a)
      <type 'str'>

      在遇到unicode码和str型合并操作的时候可以强制都转为str型进行合并就没有类似的错误了。

      解决方式就是在C:Python27Lib tpath.py 打开将84行result_path = result_path+ p_path替换为result_path = str(result_path) + str(p_path)

  • 相关阅读:
    复利软件单利及期望值的实现
    实验0 了解和熟悉操作系统
    关于《软件工程》的读后感
    评论
    一个完整的大作业
    数据结构化与保存
    爬取所有校园新闻
    用requests库和BeautifulSoup4库爬取新闻列表
    中文词频统计及词云制作
    组合数据类型练习,英文词频统计实例
  • 原文地址:https://www.cnblogs.com/stupidhod/p/3857400.html
Copyright © 2011-2022 走看看