strs = "bema schwimmfl gel gr÷▀e 0"
a = chardet.detect(strs) #windows-1252
str2 = strs.decode('windows-1252')
str2.encode('utf-8')
print str2
import chardetstrs = "bema schwimmfl gel gr÷▀e 0"a = chardet.detect(strs) #windows-1252str2 = strs.decode('windows-1252')str2.encode('utf-8')print str2 ...
ASCII,UTF-8,UTF-16(2个变体),UTF-32(4个变体)
Big5,GB2312,EUC-TW,HZ-GB-2312,ISO-2022-CN(繁体中文和简体中文)
EUC-JP,SHIFT_JIS,CP932,ISO-2022-JP(日语)
EUC-KR,ISO-2022-KR,Johab(韩文)
KOI8-R,MacCyrillic,IBM855,IBM866,ISO-8859-5,
Windows
-1251(Cyrillic)
ISO-8859-5,
Windows
-1251(保加利亚)
ISO-8859-1,
Windows
-
1252
(西欧语言)
ISO-8859-7,
Windows
-1253(希腊文)
ISO-8859-8,
Windows
-1255(可视和逻辑希伯来语)
TIS-620(泰国)
由于ZipFile模块导出遇到中文解码不对,
windows
上会出现,linux是否会出现不知道没测试过。
解决
方式:
1. 搞个文件名引射表(不太方便,少量文件夹套用时候还可以)
2. 修改源码解码格式(不太方便,自己搞了一下,之后报其他错误)
3. 自己写入文件,自己创建文件夹(推荐)
自己创建的写法:
with zipfile.ZipFile(file=zip_save_path, mode='r') as zf:
# 解压到指定目录,首先创建一个解压目录
os.mkdir(unzip_dir_path)
for old_name in
很多时候在
windows
下压缩文件没问题,但是到了Linux下,出现
乱码
,很常见。以前在Ubuntu下,用`unzip -O GBK filename.zip` 就可以搞定。 换了Fedora后,暂时没发现
乱码
的压缩文件。晚上下载一本书的光盘,又碰到了
乱码
。尝试之前的方法没成功。看了下unzip的help,没-O那个参数了== 刚好找到一个用
python
解决
的办法,分享下。
新建一个`.py`后缀的文件,直接复制粘贴代码:
#!/usr/bin/env
python
# -*- coding: utf-8 -*-
import os
import sys
import zipfile
str
ing GbkToUtf8(const char* src_
str
)
int len = MultiByteToWideChar(CP_ACP, 0, src_
str
, -1, NULL, 0);
wchar_t* wst
该文件可以
解决
Matplotlib 中文
乱码
问题
该方法是通过修改 Matplotlib 的配置文件达到目的
该方法与传统的 Matplotlib 中文
乱码
解决
方案相同
只是不用自己按照传统步骤去手动修改文件
直接运行本文件就可以了 当然代码还是通过按照步骤 去修改配置文件
欢迎广大网友方便运用 丰富内容
文件目录:
matplotlib字体配置文件.py 为主程序入口
msyh.ttc 微软雅虎字体文件
msyhbd.ttc 微软雅虎字体文件
msyhl.ttc 微软雅虎字体文件
微软雅虎字体文件是
windows
自带的目录在
C:\
Windows
\Fonts\Microsoft YaHei UI 下
但一般不允许本程序访问 所以拧出来
本代码使用的
python
库都是自带的
当然运行本程序之前请先安装matplotlib库
运行本程序 请将上述4个文件放入同一个目录中
输入代码
python
matplotlib字体配置文件.py 直接运行
如果遇到无法输入中文文件名运行代码 请随便改
如果还有其他问题 请在我的CSDN下留言 谢谢
欢迎大家收藏 加星星
s_utf = s.encode(‘utf-8’)
#变为为gbk,先解码为unicode,再编码
s_gbk = s_utf.decode(‘utf-8’).encode(‘gbk’)
结果如下图所示,utf-8一个中文占3个字节,gbk两个字节
用微软
windows
系统自带的记事本打开这个csv文件,菜单里选择另存,在弹出的窗口下面有个编码,这时显示出UTF-8的话说明该CSV文
Windows
为了支持英语和西欧字符,自己设计了一个编码,对应的在Code Page号是
1252
,被称为
Windows
1252
。
Windows
1252
的设计,是参考了ANSI草案(ANSI Draft)。
而ANSI draft后来发展成为正式的国际标准:ISO 8859-1
即,
Windows
1252
是在其成为正式标准ISO 8859-1之前而设计的,因此很容易理解,
Windows
1252
和ISO 8859...
原因是matplotlib.pyplot在显示时无法找到合适的字体。
先把需要的字体(在系统盘C盘的
windows
下的fonts目录内)添加到FontProperties中。
具体
解决
方法如下:
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font_set = FontProperties(fname=rc:\
windows
\fonts\simsun.ttc, size=12)
fig=plt.figure()
记得原来看到过一张很简明的关于
乱码
的解释图,不过找不到了。有那张图的同学希望能告诉我一下。
2020/02 更新:Misaka00251 有找到那张图发在群组里,这里把它转译为文本放在末尾了。
什么编码?
这里我们讨论最常见的几个:
Windows
-
1252
(CP-
1252
)、GBK(以及 GB2312。GBK 范围稍大且兼容 GB2312
详细版本见个人博客:
Python
requests发送post请求的编码问题
在HTTP协议中,post提交的数据必须放在消息主体中,但是协议中并没有规定必须使用什么编码方式,从而导致了提交方式的不同。服务端根据请求头中的Content-Type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。具体的编码方式包括如下:
application/x-www-form-urle...
4. 使用.encode()和.decode()方法
在
Python
中,可以使用.encode()将Unicode字符串编码为指定编码方式的字节串,使用.decode()将字节串解码为Unicode字符串。例如:
```
python
s = '中文字符串'
s_utf8 = s.encode('utf-8')
s_unicode = s_utf8.decode('utf-8')
5. 使用第三方库
Python
中也有一些第三方库可以帮助
解决
中文
乱码
问题,例如chardet、iconv等。这些库可以自动检测文本编码方式并进行
转换
。使用时需要先安装相应的库。例如:
```
python
import chardet
with open('file.txt', 'rb') as f:
content = f.read()
encoding = chardet.detect(content)['encoding']
content = content.decode(encoding)