中文乱码问题心得

# coding:utf-8
# !/usr/bin/env python
# !@Author : chaiwenda
# @File : .--------中文有乱码问题-------------
import os
import codecs
import chardet

file_path = 'E:/PycharmProjects/Screen_shot/picture_test/shot'
mes = []
dirs = []
if os.path.exists(file_path):
    dirs = os.listdir(file_path)

# 循环创建N个列表
messages = [['']]   # messages[[]]
n = 0
print('------test:message[0]------')
print(len(messages[0]))
print(messages[0])

for dir in dirs:
    n += 1

for K in range(1, n + 1):
    MSG_Name = "{0}_{1}".format('messages', K)
    MSG_Name = []
    messages.append(MSG_Name)  # messages[[],[],[],[],[],[],[],[],[],[]]
# 展示存储信息前的列表嵌套状态
print('-------test1---------')  # print:message[1]--message[n]
print('['),
for i in range(1, n + 1):
    print(messages[i]),
print(']'),
print('')
dirs.sort()  # 给文件排序
# for i in range(1, n + 1):
# Write_to_list(file_path, messages[i])
print('进入函数')
i = 0
for dr in dirs:  # iterater name_1--name_N
    # 编辑动态路径名文件
    File_path_name = "{0}/{1}".format(file_path, dr)
    if os.path.exists(File_path_name):  # 判断如果当前文件存在
        file_object = open(File_path_name, 'r')

        lines = file_object.readlines()

        # type = chardet.detect(lines)
        # lines = lines.decode(type["encoding"])
        file_object.close()
        mes.append(lines[0].strip())
        for line in lines[1:]:
            if line != '\n':
                mes.append(line.strip())
        file_object.close()
        # test3 将当前文本信息保存在message中并输出
        i += 1
        for m in mes:
            messages[i].append(m)
        mes = []


# text 输出每个页面的存储信息
print('----------test2:-----------\n'),
for i in range(0, n+1):
    print(messages[i])


# print('------test:message[0]------')
# print(len(messages[0]))
# print(messages[0])
# -*-coding:utf-8 -*-
# coding:utf-8
# !/usr/bin/env python
# !@Author : chaiwenda
# @File : .py
# ------------解决了中文乱码的问题-------------------------------
import os
import codecs
import chardet
import sys

reload(sys)
sys.setdefaultencoding("utf-8")
file_path = 'E:/PycharmProjects/Screen_shot/picture_test/shot'
mes = []
dirs = []
if os.path.exists(file_path):
    dirs = os.listdir(file_path)

# 循环创建N个列表
messages = [['']]  # messages[[]]
n = 0
print('------test:message[0]------')
print(len(messages[0]))
print(messages[0])

for dir in dirs:
    n += 1

for K in range(1, n + 1):
    MSG_Name = "{0}_{1}".format('messages', K)
    MSG_Name = []
    messages.append(MSG_Name)  # messages[[],[],[],[],[],[],[],[],[],[]]
# 展示存储信息前的列表嵌套状态
print('-------test1---------')  # print:message[1]--message[n]
print('['),
for i in range(1, n + 1):
    print(messages[i]),
print(']'),
print('')
dirs.sort()  # 给文件排序
# for i in range(1, n + 1):
# Write_to_list(file_path, messages[i])
print('进入函数')
i = 0
for dr in dirs:  # iterater name_1--name_N
    # 编辑动态路径名文件
    File_path_name = "{0}/{1}".format(file_path, dr)
    if os.path.exists(File_path_name):  # 判断如果当前文件存在
        file = open(File_path_name, "rb")  # 要有"rb",如果没有这个的话,默认使用gbk读文件
        buf = file.read()
        result = chardet.detect(buf)
        encoding = result["encoding"]
        content = file.readlines()
        print('-----编码是:----------')
        print(result["encoding"])
        file.close()
        # 用codecs提供的open方法来指定打开的文件的语言编码
        # 它会在读取的时候自动转换为内部unicode
        bfile = codecs.open(File_path_name, 'r', encoding)
        lines = bfile.readlines()
        bfile.close()
        k = 0
        mes.append(lines[0].strip())
        print('lines[0]=' + str(lines[0]))
        for line in lines[1:]:
            if line != '\n':
                mes.append(line.strip())
            k += 1
        print('一共有%s行字符' % k)
        for m in mes:
            messages[i].append(m)
        mes = []
        i += 1

# text 输出每个页面的存储信息
print('----------test2:-----------\n'),
for mess in messages:
    print('['),
    for m in mess:
        print('[' + str(m) + ']'),
    print(']')
# print('------test:message[0]------')
# print(len(messages[0]))
# print(messages[0])


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值