想請教:
比如 "好|",針對GBK字符集, 我如何識別出漢字和|
好|總共三個位元組
漢字的高位第一個bit肯定是1,這個沒疑問。但是低位位元組的最高位也可能是1,也可能是0
為什么這里第一個和第二個位元組是雙位元組的漢字“好”,而第三個位元組是單位元組的呢?
為什么不是第一個位元組是單位元組字符,而第二(假設最高位是1)和第三個位元組構成雙位元組字符呢?
謝謝
uj5u.com熱心網友回復:
之前好像都結帖了,又提問?假如沒蝦米特別的,普通的判斷即可,像這樣可以混合輸出就可以了。
uj5u.com熱心網友回復:
說實在的,我沒看明白
謝謝
uj5u.com熱心網友回復:
這個看你用什么編碼,不確定編碼沒辦法確定規則uj5u.com熱心網友回復:
是的,先看看輸出的效果圖,因為不知應用場景,以及有何特殊要求。uj5u.com熱心網友回復:
因為這圖是這樣的一個字串引數。
string a = "今天" + to_string(timeDest.wYear) + "年" + (timeDest.wMonth > 9 ? "" : "0") + to_string(timeDest.wMonth) + "月" + (timeDest.wDay > 9 ? "" : "0") + to_string(timeDest.wDay) + "號XianFaJuShi回復";
數碼段仿真(a);
uj5u.com熱心網友回復:
數碼段仿真又添加了輸出漢字,有點與貼相關的意思.uj5u.com熱心網友回復:
GBK
uj5u.com熱心網友回復:
把狀態機畫出來,就應該清楚了,而且我想今天漢字在計算機的應用那么普及的情況下,完全應該有現成的庫,uj5u.com熱心網友回復:
看了一帖,不妨轉一下
uj5u.com熱心網友回復:
謝謝,看不懂
uj5u.com熱心網友回復:
如果用自然語言描述。讀完一個字符,處理下一個字符的時候,如果高位為位元組1,繼續處理下一個位元組,字符讀取完畢。
如果高位為0,直接按單位元組字符處理,字符處理完畢。
重復上述程序。。。。。
大致代碼如下
char str[] = "哈哈1你好23";
char* p = str;
while (*p != '\0')
{
char hz[3] = { 0 };
if (*p&0x80)
{
hz[0] = *p;
printf("高位編碼:%x|", (*p)&0x000000ff);
p++;
hz[1] = *p;
printf("底位編碼:%x ", (*p)&0x000000ff);
printf("\t字符:%s\n", hz);
}
else
{
printf("編嗎:%x \t 字符: %c\n", *p, *p);
}
p++;
}
uj5u.com熱心網友回復:
高位編碼:b9|底位編碼:fe 字符:哈高位編碼:b9|底位編碼:fe 字符:哈
編嗎:31 字符: 1
高位編碼:c4|底位編碼:e3 字符:你
高位編碼:ba|底位編碼:c3 字符:好
編嗎:32 字符: 2
編嗎:33 字符: 3
uj5u.com熱心網友回復:
看其前一貼說從文本讀出來的,未說明比較漢字要做蝦米?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/101681.html
標籤:C++ 語言
