该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

3 楼的可以用 sys.getfilesystemencoding 检测,但由於文件系统的差异,文件名 100% 无损转还是不太可,比如很多 *nix 的文件系统支持除 / 和 \0 外的所有字符,而 win 下不可能

4 楼的可以看 log,当然最好的情况是设 logger,设好以后是一劳永逸的,看 request 和所用的 template 之类的,可以使用 django debug toolbar

1, 5 楼是典型的 encoding 问题

文件名先撇开不说,就说字符编码,只要理清逻辑,那麼类似的 ascii 无法 encode 的错误你就知道怎麼避免

先说编码,ascii 属於 7bit,就算加上最高位,也只能编码 256 个字符,不说 cjk,就光光所有欧洲语系都不够用,於是就出现各种编码方案,特别是 cjk 的,如早期的 gb2312 和 big5

嗯,扯远了,先拉回来

简单的说,目前常见的 cpython2 打包,估计编译时多设了内部使用 ucs2 编码,部分可能用 ucs4,简单的说就是 cpython 内部处理

嗯,这个角度还是太远

这麼说吧,就是当你在外部输入字符串的时候,如果有非 ascii 字符,那麼是一定带有特定的编码方案的,即所谓的 encoding,比如你常用的 linux 下很可能是 utf-8,那麼如果你要转换成其他编码方案,比如 gtk,需要先 decode,然后再 encode

比如:

在 utf-8 下的终端中的 repl

>>> s = '中文' #

>>> u = s.decode('utf-8') #

>>> s_gbk = u.encode('gbk') #

只要理清了这个,那麼上面的文件就知道怎麼处理了,因为通常是概念没理清,不知道什麼时候该用 encode,什麼时候该用 decode 造成的。

然后是文件名的编码问题了,一开头说的可以找出本地文件系统默认编码,但是,各种方案对 unicode 全字符集的支持不一,比如 gb2312 支持的就少,早期 window 用的 cp932(这个数字具体记不清楚) 也少,直接转 utf-8 通常还会出现问题,必须过滤掉非法字符,但这样又可能出现额外的重名,现代的 windows 文件系统名字编码应该没问题了,但是我太久没用过,无法验证。

这几天事情很多,目前只能先草草说一下,太乱了将就一些

python处理文件名_[请教]python的中文文件名处理相关推荐

  1. python打开中文文件名_[请教]python的中文文件名处理

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 3 楼的可以用 sys.getfilesystemencoding 检测,但由於文件系统的差异,文件名 100% 无损转还是不太可,比如很多 *nix 的 ...

  2. 大一python编程题_请教python编程问题(作业就剩这几道题了)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1. def cleanword(word): (用Python写出程序,使程序可以通过下面的doctest) """ &g ...

  3. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  4. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  5. python打开中文文件名_解决python打开中文文件名乱码的问题

    解决python打开中文文件名乱码的问题 发布时间:2020-07-27 11:20:22 来源:亿速云 阅读:162 作者:清晨 小编给大家分享一下解决python打开中文文件名乱码的问题,相信大部 ...

  6. Python中cv2.imread()函数不能读中文文件名文件

    cv2.imread读取中文文件名 将 image = cv2.imread(image_file) 替换为: image = cv2.imdecode(np.fromfile(image_file, ...

  7. python global用法_【python测试开发栈】python基础语法大盘点

    周边很多同学在用python,但是偶尔会发现有人对python的基础语法还不是特别了解,所以帮大家梳理了python的基础语法(文中的介绍以python3为例).如果你已然是python大牛,可以跳过 ...

  8. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

  9. 使用python预测基金_使用python先知3 1创建预测

    使用python预测基金 This tutorial was created to democratize data science for business users (i.e., minimiz ...

最新文章

  1. asp.net的get和post请求
  2. python同时对文件进行读写操作-Python实现的读取文件内容并写入其他文件操作示例...
  3. 我的第一个用Hibernate框架写的小例子
  4. python写的程序怎么打包成exe_python--- 如何将自己的程序打包成exe ?
  5. 0.Overview----Machine Learning
  6. 疑似华为P30 Pro样张曝光:10倍变焦依然清晰
  7. 【训练计划】ACM题集以及各种总结大全
  8. VS2015编译VS2013工程文件出错
  9. 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
  10. 自然语言处理NLP星空智能对话机器人系列:理解语言的 Transformer 模型-子词分词器
  11. 系统集成项目-管理工程师教程·一
  12. MATLAB简介与桌面系统
  13. Kaptcha 使用
  14. canvas实现旋转缩放的方块
  15. win10家庭版调出组策略_正版Win10免费送!支持无限次数重装
  16. Python之marshmallow
  17. 企业进行固定资产盘点的作用
  18. POI导入Excel文件(包含.xsl和.xslx文件兼容问题)
  19. Python从入门到实践第9章课后作业
  20. 探索Google App Engine背后的奥秘(1)--Google的核心技术(转帖)

热门文章

  1. 英特尔cpu发布时间表_英特尔10nm芯片开始大规模出货,先进制程时间表浮出水面...
  2. linux java 共享内存_Linux进程间通信之共享内存
  3. jre6-java运行环境_Java运行环境(JRE8)64位 1.8.0.25
  4. 深度学习,路在何方?
  5. 容器中用uwsgi协议部署注意的问题以及用flask部署
  6. 【干货】推荐系统中的机器学习算法与评估实战
  7. 匈牙利算法-指派问题、二分图问题等
  8. 论文学习15-Table Filling Multi-Task Recurrent Neural Network(联合实体关系抽取模型)
  9. 委托、Lambda表达式、事件系列07,使用EventHandler委托
  10. Exalogic硬件架构