python读取中文文件乱码(python 读中文)
使用jython从python传到Java的中文为乱码如何处理?
在将 Python 代码转换为 Java 代码时,如果出现中文乱码问题,可以考虑以下方法解决:
在 Python 代码中使用 Unicode 编码,并在 Java 代码中设置字符集为 "UTF-8"。
使用 Python 的字符串转码函数,如 .encode('utf-8') ,将字符串转换为 UTF-8 编码。
使用 Java 的字符串转码函数,如 new String(string.getBytes("ISO-8859-1"), "UTF-8") ,将字符串转换为 UTF-8 编码。
使用 Jython 中的 sys 模块,设置系统默认编码为 UTF-8 。
设置环境变量,在命令行中输入 export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
这些方法中的任意一种都可能有助于解决中文乱码问题,但是具体解决方案取决于应用程序的具体情况。
python解决csv文件用excel打开乱码问题
【问题】
python输出的csv文件用excel打开,里面的中文会变成乱码,但用window下的记事本或mac下的numbers打开就正常显示。
原因是python输出的文件是utf-8编码写入的,excel默认以gbk方式读取,导致乱码发生。
【解决方法1】文件产出时encoding设置为utf-8-sig????
用excel打开csv时,excel会先检查文件的第一个字符,来了解这个文件是什么编码方式,如果这个字符是BOM,excel就知道用utf-8的方式打开这个文件。python自带了处理BOM的编码方式uft-8-sig,因此只需要在文件产出时将encoding设置为utf-8-sig。
如果文件不是由python产出的,只需要以utf-8方式读入再以utf-8-sig方式存储即可
【解决方法2】懒人法,适用只含简体中文的文件
用记事本打开,点击另存为,右下角编码方式选择“ANSI”,这个过程是把这个文件改成gbk编码格式,excel就是默认用gbk方式打开的。
参考: Python写的csv文件,如何让 Excel 双击打开不乱码? - 云+社区 - 腾讯云
对编码格式一窍不通的可以阅读以下网页
python笔记——二进制和文件编码_砍柴姑娘Jourosy的博客-CSDN博客
编码方式之ASCII、ANSI、Unicode概述 - 蓝海人 - 博客园
【简单总结】:
1. 首先需要了解 字符集 和 字符编码 两个概念,字符集定义了字符和二进制的一一对应关系,字符编码规定了如何将字符的编号存储到计算机中。
2. Unicode是字符集,包含了全球文字的唯一编码,utf-8是编码方式,将unicode以某种方式存储到计算机中。
3. 有些字符集和编码是结合在一起的,称作字符集还是编码都无所谓,比如ASCII,GBK
4. ANSI是各个国家地区不同扩展编码方式的总称,互不兼容(可以看出来通用性没有utf好)
5. 不同编码方式在转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
python中读取文件(路径含中文)出现乱码问题。
没有??Python3 。
你试一下
path?=?'Py....'??#?下面添加一行
path?=?path.decode('gbk')
python response 中文乱码问题
获得response.text有如下类似的乱码:
解决方法有两种:
第一种:
apparent_encoding方法是requests库利用chardet对字节流编码进行了猜测。一般来说使用这种方法,大部分网页的中文乱码都会恢复。如果还是不行,那就试试第二种方法。
第二种:
从网页格式中获得网页内容的编码方式(一般content-type字段会出现在HTML的header的头几行)。
如果直接拿来用,会报错
所以需要给decode加上第二个参数,decode([encoding], [errors='strict']), 第二个参数设置为ignore,则会忽略非法字符。
这样就能获得正确的中文内容了。
练习网址
python print中文乱码问题 win10 Python2
因为windows默认的编码方式是GBK,python文件保存时使用了utf-8,在读取时,python使用GBK的编码表去解utf-8编码的字节码,因为GBK与UTF-8编码不兼容,自然出现了乱码问题
解决方法:
1.直接使用 u'是' 形式,指明以unicode编码,解码方式会以顶部 #coding定义的编码方式,如果不写,以操作系统当前编码方法,建议写上#coding,因为要让操作系统编码和源文件编码经常会不一样。推荐使用这种方式
2.输出时指定解码方法 ?print '是'.decode("utf8") ,必须和保存的编码一致,忽略#coding的定义
3.将#coding 和保存编码改为和操作系统一样的编码,就可以直接print '是' 正常输出,也不推荐,因为需要事先知道操作系统编码,复制到其他电脑上,操作系统编码不一样就会出错
#coding=gbk
print?u'是'?#方法1
print?'是'.decode("gbk")?#方法2
print?'是'?#方法3
注意:
#coding指明的编码必须和保存的编码一样,不然1,3方法都会产生错误,原因也是保存编码和读取编码不一致。一般IDE能够自动根据#coding保存文件