zsun苹果盘如何解决读txt文字乱码怎么解决件乱码呢

苹果/安卓/wp
积分 2074, 距离下一级还需 151 积分
权限: 自定义头衔, 签名中使用图片, 隐身, 设置帖子权限
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡, 抢沙发, 提升卡下一级可获得
权限: 设置回复可见道具: 沉默卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
开心签到天数: 1246 天连续签到: 17 天[LV.10]以坛为家III
& & 发现一个奇怪的事情,txt文件中的中文内容(如下图所示),要是直接复制粘贴到Stata中,显示的就没有问题,如果用insheet命令导入就全是乱码,不知何故。& & txt文件内容如图所示。
16:57:58 上传
载入中......
直接用notepad另存为ansi编码试试
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
论坛法律顾问:王进律师怎么解决读取txt文件读取时中文乱码问题???_python吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:132,357贴子:
怎么解决读取txt文件读取时中文乱码问题???收藏
我要从txt文件中读取中文,可是。。。。。一堆。。。
美橙互联-十年品质,建站顾问,一对一顾问服务!
txt文件中是什么编码的,要转换一下,例如f.read().decode("gbk")
for line in inffi.readlines()....line.decode('gbk')
另外要注意文件的编码,如果是utf-8的要用decode('utf-8')
import codecscodecs.open('x.txt', 'r', 'gbk')
这个问题,看你原来的文本文件格式保存的是utf-8还是gb2312一般这样处理mystr.decode('utf-8').encode('gb2312')或mystr.decode('gb2312').encode('utf-8')来自sina微博“python爱好者”的回答。
有些是有bom头的,把头去掉再解码
codecs正解
以下的前提是python2.7先用一些编辑器比喻editplus 看一下你的txt文件保存的是utf-8,还是gb2312或其他的。当你读行时可以这样line = (file1.readline()).decode('utf-8').encode('gb2312')或line = (file1.readline()).decode('gb2312').encode('utf-8')一些朋友对python2的汉字编码没有搞很清楚,就认为很难搞,就学python3.其实很好搞,字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码成unicode,再从unicode编码成另一种编码。抓住"字符串在Python2.7内部的表示是unicode编码"这个本质,再用这个万能的代码decode('gb2312','ignore').encode('utf-8') 或decode('utf-8','ignore').encode('gb2312')等等
你们都忽略了一个问题。txt使用utf8编码的时候会默认在文件开头插入三个不可见字符。这个是windows用来判断txt编码是否为utf8的。所以如果你直接使用decode('utf-8')的话是得不到正确结果的。必须先判断前三个字符是否是windows插入的那三个。这个python已经定义了一个常量了,可以直接和这个常量比较,如果一样就删除前三个字符然后再decode。不过常量名我忘了。。。百度一下吧ps.其他文本编辑器不会出现这个问题。只有txt选择utf8会这样。
python3下比较简单,打开的时候指定encoding参数即可:open("txt.txt", encoding="gbk").read()
list中取出来字符然后再decode(*gbk*).encode(*utf-8*) 就可以了
名士从来多濯足,斑皤于此稍矜姿。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或1528人阅读
程序人生(1)
在编程中,我们经常需要对txt文件进行读写操作,有时候由于编解码问题,txt读写会出现乱码问题。下面介绍一种基于ofstream和ifstream的txt文件读写方法,并介绍txt文件读写的乱码解决方案。
1.txt文件写入
#include &fstream&
#include &iostream&
using namespace std;
int main()
ofstream outfile("1.txt",ios::ate);
if(!outfile)
cout&&"txt文件打开失败!"&&
outfile&&"写入txt文件示例.\n";
outfile&&"成功写入.\n";
outfile.close();
txt里面的写入内容如下:
成功写入。
2.txt文件读出
对上面读入内容的txt进行读出操作,代码如下:
#include &fstream&
#include &iostream&
using namespace std;
int main()
char txt[100];
infile.open("1.txt");
if(!infile.is_open())
cout&&"txt文件打开失败"&&
while(!infile.eof())
infile.getline(txt,100);
cout&&txt&&
infile.close();
getchar();
读出结果为:
读出结果正确。
3.txt读写乱码问题
有时候由于txt文件编码问题的不同,会导致读写的时候出现乱码,通常的txt编码方式有:
上面默认的编码方式为ANSI,如果我们现在将它另存为1.txt,但编码格式变为UTF-8,那么读出结果会变成:
发现结果完全错误,这时候我们需要编解码转换,具体代码如下:
#include &fstream&
#include &iostream&
#include &Windows.h&
#include &string&
using namespace std;
string UTF8ToGB(const char* str)
WCHAR *strS
int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
strSrc = new WCHAR[i+1];
MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);
i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
szRes = new CHAR[i+1];
WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);
result = szR
delete []strS
delete []szR
int main()
char txt[100];
infile.open("2.txt");
if(!infile.is_open())
cout&&""&&
while(!infile.eof())
infile.getline(txt,100);
msg=UTF8ToGB(txt);
cout&&msg&&
infile.close();
getchar();
将读出结果进行上述转换,发现结果又正确了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6456次
排名:千里之外
原创:10篇
(1)(4)(8)(1)

我要回帖

更多关于 txt中文乱码怎么解决 的文章

 

随机推荐