[問題] 讀檔出現亂碼

看板C_and_CPP作者 (阿呆)時間14年前 (2011/08/28 13:11), 編輯推噓2(2025)
留言27則, 7人參與, 最新討論串1/1
開放平台: OS :WINDOWS NT 4.0(老舊系統) compile :code blocks 問題: 讀MESSAGE.TXT文字檔時,存成另一個新文字檔,存完打開有一半都出現亂碼 我把我要讀的文字檔用pspad打開 圖檔:http://www.wretch.cc/album/show.php?i=CJSHF&b=15&f=1048963581&p=1 檔名:MESSAGE.TXT 預期結果: 讀出來存成另一個新文字檔,不會出現亂碼 錯誤結果: 至少出現一半左右的亂碼 以下是錯誤結果,我大約貼幾行就好 羚鞋?? 耠 F _TNA75: THE_HANDLE hello this is my data/100/08/25 v 箬櫅鞋?? _TNA75: THE_HANDLE 程式碼: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE *fp1,*fp2; char str[80]; fp1=fopen("MESSAGE.TXT","rt"); fp2=fopen("message_read.txt","wt"); if(fp1!=NULL) { while(fgets(str,80,fp1)!=NULL) fputs(str,fp2); } else printf("open file is fail\n"); fclose(fp1); fclose(fp2); system("pause"); return 0; } 我猜想可能的原因,會不會是因為big5的關係 我在NT系統裡面,打開MESSAGE.TXT時,就有部份文字是亂碼 可是我用pspad打開MESSAGE.TXT時,就不會出現亂碼 請問各位大大,該怎麼讀取MESSAGE.TXT檔,才不會出現亂碼? 希望知道的人,可以告知小弟一下 我會非常感謝大家的! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.129.67.84

08/28 21:12, , 1F
code ...
08/28 21:12, 1F

08/28 21:24, , 2F
板規2
08/28 21:24, 2F

08/28 21:47, , 3F
不好意思,我會立刻補上
08/28 21:47, 3F
※ 編輯: hawfu 來自: 220.129.67.84 (08/28 22:03)

08/28 22:02, , 4F
可以的話,把你的檔案找個免空傳上來
08/28 22:02, 4F

08/28 22:10, , 5F
看你的MESSAGE.TXT有不少非文字碼,或許用fread跟fwrite
08/28 22:10, 5F

08/28 22:10, , 6F
比較不會出問題,或者用fgetc, fputc逐字複製
08/28 22:10, 6F

08/28 22:15, , 7F
感謝J大回覆,我之前有用過fread/fwrite試過,也是亂碼
08/28 22:15, 7F

08/28 22:16, , 8F
因為在NT用notepad開就亂碼了,不過用pspad開就很正常
08/28 22:16, 8F

08/28 22:18, , 9F
我改用fgetc/fputc試看看好了,謝謝J大!
08/28 22:18, 9F

08/28 22:18, , 10F
改用binary mode讀/寫檔案...(*.*)
08/28 22:18, 10F

08/28 22:20, , 11F
我覺得要顯示正常 要過濾一下資料...
08/28 22:20, 11F

08/28 22:20, , 12F
我覺得問題在原PO並不知道他在讀寫些什麼東西...
08/28 22:20, 12F

08/28 22:21, , 13F
原PO你這個檔案最初是從哪裡來的?
08/28 22:21, 13F

08/28 22:21, , 14F
我跟LPH66有同感,看起來有些東西本來就會變成亂碼...
08/28 22:21, 14F

08/28 22:23, , 15F
恩恩 而且pspad也只做對照而已...
08/28 22:23, 15F

08/28 22:27, , 16F
這是從前人(美國人)的程式執行完存出來的檔案,在NT上
08/28 22:27, 16F

08/28 22:28, , 17F
當初好像是有分XXX.msg與xxx.txt檔二種,我是用txt檔來存
08/28 22:28, 17F

08/28 22:29, , 18F
我有把XXX.msg的檔存起來看過,在pspad也是正常
08/28 22:29, 18F

08/28 22:30, , 19F
不過用NT內建的notepad開就是亂碼
08/28 22:30, 19F

08/28 22:31, , 20F
依這個檔案來看,本來就會有亂碼了
08/28 22:31, 20F

08/28 22:34, , 21F
所以不管怎麼讀還是亂碼是嗎?J大!
08/28 22:34, 21F

08/28 22:35, , 22F
除非像firejox說的,有些本來就無法顯示的東西要丟掉
08/28 22:35, 22F

08/28 22:35, , 23F
有檔案 , 有真相。
08/28 22:35, 23F

08/28 22:37, , 24F
看樣子,只好讀要的資料進來就好了,其於都不要讀進來是嗎?
08/28 22:37, 24F

08/28 22:42, , 25F
理論上是這樣沒錯 但你要得想辦法讓你的程式判斷出
08/28 22:42, 25F

08/28 22:42, , 26F
到底裡面哪些是要的資料哪些是不要的資料...
08/28 22:42, 26F

08/28 22:54, , 27F
感謝L、J大回應,我大概知道,很感謝您們!!!
08/28 22:54, 27F
文章代碼(AID): #1EMZwADS (C_and_CPP)