python: py2下 中文 的 文件读写 及 打印

  读写中文文件时,不需要考虑编码的情况。此时虽然可以正常从文件中读取中文,也可以正常地将中文写入文件中,但是无法正常打印中文字段到屏幕上:

# coding=utf-8

SRC_PATH = './src.txt'
DST_PATH = './dst.txt'

src_file = open(SRC_PATH, 'r')
dst_file = open(DST_PATH, 'w')
for line in src_file.readlines():
    dst_file.writelines(line)
    print line
src_file.close()
dst_file.close()
琛��夸腑蹇�����浜���

����涓�蹇��ㄤ�娴枫��

Hello world! Hello python!

  打印中文字段时,需要提前把系统编码由 ascii 转换到 utf-8

# coding=utf-8

SRC_PATH = './src.txt'
DST_PATH = './dst.txt'

import sys                       # new added
reload(sys)                      # new added
sys.setdefaultencoding('utf-8')  # new added

src_file = open(SRC_PATH, 'r')
dst_file = open(DST_PATH, 'w')
for line in src_file.readlines():
    dst_file.writelines(line)
    print line.encode('gb18030') # new added
src_file.close()
dst_file.close()
行政中心是北京。

金融中心在上海。

Hello world! Hello python!

  查看系统编码的具体转换状况:

# coding=utf-8

import sys
print ('origin_encoding = {}'.format(sys.getdefaultencoding()))
reload(sys)
sys.setdefaultencoding('utf-8')
print ('new_encoding = {}\n'.format(sys.getdefaultencoding()))
origin_encoding = ascii
new_encoding = utf-8

  在不转换系统编码下直接输出中文字段:

print u'中文'
print u'中文'.encode('gbk')
print u'中文'.encode('gb18030')
print
print '中文'
print u'中文'.encode('utf-8')
中文
中文
中文

涓���
涓���

  在转换系统编码下直接输出中文字段:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u'中文'
print '中文'.encode('gbk')
print '中文'.encode('gb18030')
print u'中文'.encode('gbk')
print u'中文'.encode('gb18030')
print
print '中文'
print '中文'.encode('utf-8')
print u'中文'.encode('utf-8')
中文
中文
中文
中文
中文

涓���
涓���
涓���


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

JavaScript强化教程——AngularJS 指令

本文为 H5EDU 机构官方 HTML5培训 AngularJS 通过被称为 指令 的新属性来扩展 HTML。 AngularJS 通过内置的指令来为应用添加功...

20810
来自专栏会跳舞的机器人

java并发编程的艺术笔记第一章——并发编程的挑战

单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切...

1063
来自专栏WD学习记录

8-21Android 学习ing

(2)Tomcat服务器默认采用的是ISO8859-1编码得到的参数值,这种编码不支持中文,也会导致乱码

1053
来自专栏林德熙的博客

win10 uwp 应用转后台清理内存

我在写小说阅读器,把每个打开的文件的内容读到内存,因为小说都很小,所以放在内存不怕太大,但是我如果打开了一本小说,再打开一本,我不会把先打开的小说的内容清除掉,...

1262
来自专栏java 成神之路

vmstat 命令详解

4177
来自专栏智能算法

Python学习(十)---- python中的进程与协程

原文地址: https://blog.csdn.net/fgf00/article/details/52790360 编辑:智能算法,欢迎关注! 上期我们一起学...

872
来自专栏Java后端技术栈

面试必备技能:JDK动态代理给Spring事务埋下的坑!

最近做项目遇到了一个很奇怪的问题,大致的业务场景是这样的:我们首先设定两个事务,事务parent和事务child,在Controller里边同时调用这两个方法,...

1353
来自专栏Hongten

java多线程系列_线程简介(1)

    线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少...

1282
来自专栏我是攻城师

给Java字节码加上”翅膀“的JIT编译器

上面文章在介绍Java的内存模型的时候,提到过由于编译器的优化会导致重排序的问题,其中一个比较重要的点地方就是关于JIT编译器的功能。JIT的英文单词是Just...

1245
来自专栏前端知识分享

第217天:深入理解Angular双向数据绑定的原理

双向绑定是新的前端框架中频繁出现的一个新词汇,也是mvvm的核心原理。angularjs五条核心信念中的数据驱动,便是由双向绑定进行完成。

1642

扫码关注云+社区

领取腾讯云代金券