扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
执行python脚本出现乱码的解决方法:首先把中文解码为unicode,具体方法如:【decode('utf-8')】;然后再转化为gbk即可,具体方法如:【encode('gbk')】。
创新互联建站-专业网站定制、快速模板网站建设、高性价比长清网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式长清网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖长清地区。费用合理售后完善,10余年实体公司更值得信赖。
问题:
代码中指定了UTF-8编码,但是在cmd命令行窗口时打印的中文仍然会乱码。
(推荐教程:Python入门教程)
原因:
windows下中文默认的输出编码为gbk ,与脚本中定义的UTF-8不一样,所以出现了解码失败的情况。
解决方法:
可以先把中文解码为unicode,然后再转化为gbk来解决这个问题。
举例:
运行结果:
首先变量最好别命名成str,因为有str这个函数,我就假设你用的是str0了
对于你的问题,应该是编码的问题,和split没有关系,你可以直接print str0看看。要解决问题,就是进行转码:str0=str0.decode("utf-8").encode("gbk"),然后进行str1=str0.split(),
在将 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"
这些方法中的任意一种都可能有助于解决中文乱码问题,但是具体解决方案取决于应用程序的具体情况。
这个字符串是utf8的。
上网找如何从utf8转到多字节编码。
或者使用我提供的思路:
windows下有一个api叫做MultiByteToWideChar,可以从一种编码转到UCS2编码
还有一个api叫做WideCharToMultiByte,可以从UCS2编码转到一种编码
于是你用这两个函数,前者把utf8转到UCS2,后者从UCS2转到多字节编码(这里的“多字节编码”你需要CP_ACP或者932
用atl的话可以这样:
char a[100];
strcpy(a, CW2A(CA2WEX(s, CP_UTF8)));
头文件:
atlbase.h
atlconv.h
python 3和2很大区别就是python本身改为默认用unicode编码。
字符串不再区分"abc"和u"abc", 字符串"abc"默认就是unicode,不再代表本地编码、
由于有这种内部编码,像c#和java类似,再没有必要在语言环境内做类似设置编码,比如“sys.setdefaultencoding”;
也因此也python 3的代码和包管理上打破了和2.x的兼容。2.x的扩展包要适应这种情况改写。
另一个问题是语言环境内只有unicode怎么输出gbk之类的本地编码。
答按惯例都在(序列化)输出时才转换成本地编码。
比如
file.write("GBK的中文".encode("GBK"))
python环境内字符串用str.encode("GBK")方法输出成字节串用于和其他环境交流。
乱码是编码问题,微软的excel默认打开的编码是gbk,如果你写入的数据是非gbk编码的,那么使用微软excel打开就会出现乱码的情况。解决方法为:对要写入的数据编码为gbk之后在进行写入,在python中的简单的操作方法如下:
1.源数据为unicode编码,则直接使用encode("gbk")即可转换编码;
str = u"我爱中国共产党" # unicode编码的字符串
des_str = str.encode("gbk") #转换为gbk编码
2.源数据不是unicode编码,那么必须先使用decode函数解码为unicode编码,在按照第一种情况转换为gbk编码。
str = u"我爱中国共产党" # unicode编码的字符串
src_str = str.encode("utf-8") # 源数据格式utf-8
des_str = str.decode("utf-8").encode("gbk") #转换为gbk编码
注意:encode和decode方法为字符串的方法,不能应用与列表等其他类型的数据上
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流