關於unicode程式設計的乙個問題

2021-04-06 20:41:57 字數 1284 閱讀 6968

關於unicode程式設計的乙個問題

網路上關於

unicode

或寬位元組程式設計的介紹很多

,為什麼要這樣的的原因介紹的也很多

,下面我們就從實用的角度出發

,來看一下如果不採用

unicode

或者寬位元組程式設計會給我們帶來的乙個問題

.

我們通過一段**來演示不採用

unicode

和採用了之後所產生的不同結果

.

先看沒有採用

unicode的:

#include

#include

#include

void

main()

;

strcpy(hz,"

張");

for(int k=0;k

printf("/n");

for(int i=0;i<2;i++)

}

}

輸出結果為:

ffffffd5ffffffc5

str *****=

欽佩ffffffc7ffffffd5ffffffc5ffffffe5

str *****=

惱怒ffffffc4ffffffd5ffffffc5ffffffad

不難看出

,由於單位元組的字串處理函式是按乙個位元組乙個位元組處理的,在

」欽佩」和

」惱怒

」兩個字串中都含有

ffffffd5ffffffc5("張"

),所以輸出結果為這兩個字串中都含有

"張"這個字串.

再來看看採用了寬位元組的:

#include

#include

#include

#include

void

main()

;

wcscpy(hz,l"

張");

for(int k=0;k

wprintf(l"/n");

for(int i=0;i<2;i++)

}

}

輸出結果:

5f

20

這樣,對字串的處理就不再出現誤判的情形.

在實際程式設計中

,需要處理漢字的部分多集中在介面處理部分

,當然在後台程式中也可能會涉及

乙個關於Unicode字元編碼的奇怪問題

有乙個學員問了乙個關於unicode字元編碼的奇怪問題。問題如下 string strchina 中國 1 直接把每個字元中的內容對應著的整數列印出來,顯示的結果就是這個字元的unicode碼,則下面的 for int i 0 i 列印出的結果是 4e2d 56fd 2 下面的 byte buf s...

乙個關於Unicode字元編碼的奇怪問題

有乙個學員問了乙個關於unicode字元編碼的奇怪問題。問題如下 string strchina 中國 1 直接把每個字元中的內容對應著的整數列印出來,顯示的結果就是這個字元的unicode碼,則下面的 for int i 0 i 列印出的結果是 4e2d 56fd 2 下面的 byte buf s...

乙個關於Unicode字元編碼的奇怪問題

問題如下 string strchina 中國 1 直接把每個字元中的內容對應著的整數列印出來,顯示的結果就是這個字元的unicode 碼,則下面的 for int i 0 i 列印出的結果是 4e2d 56fd 2 下面的 byte buf strchina.getbytes unicode fo...