文本乱码,结果是十六进制数字,编码,解码问题 您所在的位置:网站首页 十六进制密码转换 文本乱码,结果是十六进制数字,编码,解码问题

文本乱码,结果是十六进制数字,编码,解码问题

2023-08-29 10:56| 来源: 网络整理| 查看: 265

我在文本聚类时,将选好的文本词写入到TXT文本时发生了乱码的问题。具体下面这种情况:

就是将本本字符写到txt文本,txt文本是默认的ANSI,查了很多资料都说是编码格式的问题。

问题说明:文中的是十六进制,而且是bytes类型。

字符串的类型只有两种(str,bytes)。编码的方式有utf-8,GBK等等。利用encode(编码方式)将str型字符串变成bytes型字符串。decode(编码方式)就反过来。

下面看我的代码:

result = open(docPath,'a',encoding = 'utf-8') for j in range(len(word)): #print(type(word[j])) result.write(str(word[j].encode('utf-8') + b' ')) result.write('\r\n')

其中word[j]的内容是这样的      '一周', '一场', '一堆', '一种', '一秒', '一路', '万事开头难', '三元组',     典型的文本字符串。(word[j].encode('utf-8') + b' ')就是bytes型字符,没有转成str型,导致写入进去的时候就变成上图的结果(我也不知道为啥没转成)

然后我就改了循环里的代码

for ci in (word): result.write(ci + ' ') result.write('\r\n')

结果txt文件中没有十六进制了,但是出现乱码的文字

想到txt文件默认的编码是ANSI模式,但是我open时的写文件方式是“utf-8”,显然解码与编码方式冲突,所以我就把encoding的方式去掉,让他默认

result = open(docPath, 'a') for ci in (word): result.write(ci + ' ') result.write('\r\n')

文本结果如下,问题就解决了:

总结哈,分析原理,根据原理找自己代码里的问题,真的得一步一步试试。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有