程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> char-c語言文件讀取漢字及漢字編碼的問題

char-c語言文件讀取漢字及漢字編碼的問題

編輯:編程綜合問答
c語言文件讀取漢字及漢字編碼的問題

先貼程序
#define _CRT_SECURE_NO_WARNINGS

#include

using namespace std;
int main(void)
{
char ch;
FILE *f;
int i = 0;
int count = 0;
f = fopen("test.txt", "r+");
while ((ch = getc(f)) != EOF)

{

fseek(f, i, SEEK_SET);

putc(~ch, f);

i++;
fseek(f, i, SEEK_SET);

count++;
}
fclose(f);
printf("文件操作已經完成\n");
printf("共處理%d個字節\n", count);
printf("按任意鍵結束程序\n");
getchar();
return 0;
}

該程序實現的就是對文件內的字符進行取反,就是簡單的加密,再取反一次就變回原樣了,也就是解密
在對漢字進行操作的時候,我進行了一些字的實驗,目前僅發現了一個王字,在取反後取反回去不能變成王字,我加了查看字符格式的代碼,發現 王 這個字在進行第一次字符操作時候,被分解為三個字節!!!然後再操作,就變成了四個!進行一次加一次,但是其他的漢字目前沒發現錯誤,不知道是怎麼回事,難道王字的編碼就是三個字節嗎?
求大家解答一下,我是新人沒有一個c幣。。。如果以後我得到了,就追加給你,謝謝啦

最佳回答:


  • 簡單來說,是漢字編碼的問題。在Windows裡,我們生成的txt文件最有可能是是GBK編碼的。它的特點是每個漢字2個字節。沒有例外。但是也有可能是Unicode用UTF-8來編碼的,對於用Utf-8來編碼的話,每個漢字就用3個字節來表示。另外,對文本文件文本,有可能會帶上編碼前綴,那樣的話直接讀取會多讀到幾個字節(其實就是前綴)
  • 以王字為例
  • 如果是GBK(或者GB2312),表示為CD F5
  • 如果以UTF-8,表示為E7 8E 8B
  • 如果是以Unicode表示,不帶前綴為8B 73,帶前綴為FF FE 8B 73
gamefinity
gamefinity
MR_D_j
gamefinity
gamefinity
MR_D_j
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved