为了账号安全,请及时绑定邮箱和手机立即绑定

win7 中文版文件名的内部存储是怎么编码的呢?

win7 中文版文件名的内部存储是怎么编码的呢?

达令说 2023-04-30 11:07:04
win下,下面程序:#! /usr/bin/env python # coding:utf8name = '中文ero.txt'name = name[:].decode('utf-8').encode('gb2312') f = open(name, 'w') f.write("正文如下:abcdefVerão") f.close()可以正常新建一个带有中文名字的文件,这点可以理解。但是如果文件名包含有ã(鬼知道这是哪国的字符,不过应该不是中文字符,在一个.mp3文件名中看到了这个字符),即name = '中文eroã.txt'则出现以下错误:UnicodeEncodeError: 'gb2312' codec can't encode character u'\xe3' in position 5:illegal multibyte sequence应该是因为ã不是中文字符,因此gb2312无法编码它。但是问题是,为什么直接新建文件时就可以使用这个字符作为文件名呢,并且在控制台dir命令还可以看到这个字符(话说控制台的输出编码不是gb2312吗)。-----还是linux好啊,不用遇见这种问题...
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

Windows NT内核采用的是UTF-16编码Unicode字符串。
你说遇到的问题只是GB2312覆盖范围太少,请GB18030编码。

补充说明:
文件名完全可以使用unicode字符串:

name = u'中文eroã.txt'f = open(name, 'w')
-----


查看完整回答
反对 回复 2023-05-02
  • 1 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信