Python2操作中文名文件乱码解决方案

Python2默认是不支持中文的,一般我们在程序的开头加上#-*-coding:utf-8-*-来解决这个问题,但是在我用open()方法打开文件时,中文名字却显示成了乱码。

我先给大家说说Python中的编码问题,Python中的字符串的大概分为为str和Unicode两种形式,其中str常用的编码类型为utf-8,gb2312,gbk等等,Python使用Unicode作为编码的基础类型。str记录的是字节数组,只是某种编码的存储格式,终于输出到文件或是打印出来是什么格式,完全取决于其解码的编码将他解码成什么样子;Unicode是一种类似于符号集的抽象编码,它只规定了符号的二进制代码,却没有规定这个二进制代码该如何存储,也就是它只是一种内部表示,不能直接保存,所以存储时需要规定一种存储形式,比如utf-8等。

Python中有编码转换的函数,decode(char_set)可以实现其他编码到Unicode的转换,encode(char_set)实现Unicode到其他编码的转换。

  查看Python文档会发现:

    open(filename, ‘w‘)这个方法中,filename这个参数必须是Unicode编码的参数

  我之前加上#-*-coding:utf-8-*-将编码设置为utf-8,当调用这个方法往里传参数时,需要将这个变量编码转换为Unicode,比如name=‘中文.txt‘,使用open()时,这样写open(name.decode(‘utf-8‘), ‘w‘),这样创建的中文文件名就没有乱码问题了,问题解决。

时间: 2024-09-28 17:56:35

Python2操作中文名文件乱码解决方案的相关文章

eclipse里打开图片文件乱码解决方案

从eclipse中打开工程文件下的图片文件显示乱码,原因是你电脑系统上没有设置图片的默认打开方式,或者是图片的默认打开方式与eclipse不兼容,尤其是win8操作系统,用户一般将图片的默认打开方式设置为win8的图片浏览器,就是方格子的那种,每次打开图片比较慢,解决方式是将图片的默认打开方式改成windows照片查看器,注意,该步骤只需要在工程外面,任意选中一种图片,然后右键进行修改,需要兼顾jpg及png格式,两种格式都要修改默认打开方式,即可.eclipse里打开图片文件乱码解决方案,布布

不一致的文件编码读取和写入文件乱码解决方案

这些天来获得android数据加密中的应用.为了避免加密.解密算法被破解,我将成为核心的加密和解密算法使用JNI封装在一起,只有接口暴露java一层. 工作流程是这种: 1.通过自己写的加密解密工具将数据加密: 2.将加密的数据放在android的asserts目录下: 3.在首次使用数据时将asserts目录下的数据复制到一个隐藏目录下: 4.解密隐藏目录下的文件. 在用加密工具将数据加密好了,在程序解密这个数据文件的过程中,发现解密出来的文件是原来文件大小的2倍,而且全是乱码,跟踪发现,主要

PHP 导出csv文件乱码解决方案

最近在开发一个导出csv文件数据,到含有中文的时候会乱码,现在发现了一个很好的解决方案,就是再fwrite前加入一行代码即可. $fp = fopen("order.csv", "a"); //在写入数据之前先把bom头写到文件里 fwrite($fp,"\xEF\xBB\xBF"); $p=fwrite($fp,$str); // 写入数据 fclose($fp); 加上之后就可以正常了.

Linux打开txt文件乱码解决方案

例如打开dic_ec.txt乱码. 解决方法:切换控制台到文件dic_ec.txt所在目录,然后输入 1 [email protected]:~/文档/NLP$ iconv -c -f gb2312 -t utf-8 dic_ec.txt>dic.txt 意思就是将dic_ec.txt文件中的内容的编码格式由gb2312转换为utf-8.windows系统下的txt的编码格式是gb2312.

MySQL命令行导入sql文件时出现乱码解决方案

Note: sql> source F:weibo.sql(执行相关sql文件) sql> select * from sina into outfile "/weibo.txt"(导出相应数据到C:的weibo.txt) 1. mysql 5.0后其客户端仅支持gbk,故可在sql> set names gbk; 例如: set names gbk; /* Navicat MySQL Data Transfer Source Server : localhost_3

WAMP环境UTF8编码上传中文名文件文件名乱码

测试环境: windows7 php5.5.12 apache2.4.9 form表单 <form action="http://127.0.0.1/" method="post"  enctype="multipart/form-data">     <input type="file" name="MAX_FILE_SIZE" value="1000000" /&g

通过js跳转url下载包含中文的文件乱码问题解决方案(java)

问题描述: 通过js 跳转url的方式下载中文文件,因为中文文件名乱码找不到文件. 解决方案: 经过测试在tomcat 8 及以上不会出现这个问题: 以下解决方案博主亲测有效,如果您有更好的解决方案,请直接留言.互相进步. 如果是使用 tomcat7 在conf.server.xml中添加如下配置: URIEncoding="UTF-8" 配置完整: <?xml version="1.0" encoding="UTF-8"?> <

读写文件编码方式不一致导致文件乱码的解决方案

这几天在弄一个android应用的数据加密功能,为了避免加密.解密算法被破解,我将加密和解密的核心算法用JNI封装起来,只把接口暴露给java层. 工作流程是这样的: 1.通过自己写的加密解密工具将数据加密: 2.将加密的数据放在android的asserts文件夹下: 3.在首次使用数据时将asserts文件夹下的数据拷贝到一个隐藏文件夹下: 4.解密隐藏文件夹下的文件. 在用加密工具将数据加密好了,在程序解密这个数据文件的过程中,发现解密出来的文件是原来文件大小的2倍,并且全是乱码,跟踪发现

把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功的解决方案

把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败在python3中调用会成功,但是调用不能成功 解决办法是: 在该文件夹下加入空文件__init__.py python2会把该文件夹整体当成一个包 然后编辑__init__.py 加入__all__ = ["功能名1","功能名2",...../或者类名也行] 再通过from . import 模块名 这样就可以调用包中那些模块功能了 #如果导入这个模块的方式是 from 模块名 import