中文字串的位元組流

2021-07-25 11:52:00 字數 618 閱讀 1471

我遇到乙個需要處理中文字元的問題。剛開始想用wchar_t儲存,比如」你好.世界」,編碼成:

wchar_t *var = "你好.世界";
實際占用10個位元組

c4 e3 ba c3 2

e00 ca c0 bd e7 00

而如果這樣編碼:

char *var = "你好.世界";
實際占用9個位元組

c4 e3 ba c3 2

e00 ca c0 bd e7 00

造成這種差別的,就是變數型別的不同,而變數型別,是由編譯器識別和處理的,與檔案的編碼方式(gbk,utf-8)無關。我的設想是編譯器將檔案讀到記憶體,所有字元統一轉換成unicode編碼,這樣就不存在差異了,然後根據型別再封裝成二進位製流,也沒有了差別。

但實際上,我切換了文字的編碼為utf-8,結果出人意料,實際儲存占用13個位元組:

e4 bd a0 e5 a5 bd 2

e e4 b8 96 e7 958c

00

所以,實際儲存的位元組流既跟檔案編碼有關,也跟變數的型別有關。

java IO流 位元組流讀寫中文

位元組流讀取中文的問題 位元組流在讀中文的時候有可能會讀到半個中文,造成亂碼 fileinputstream fis new fileinputstream yyy.txt byte arr new byte 4 int len while len fis.read arr 1 位元組流寫出中文的問...

按位元組數擷取包含中文字串

字串擷取 有這麼一串字串,我abc愛ce你ef 要求你寫一段程式,當輸入4的時候得到的子串是 我ab 當輸入6的時候得到的子串為 我abc愛 不能出現 愛 字為半邊。擷取字串,最後如果是半個中文,補上剩下的半個 功能詳細描述 param str 原始的字串 param size 需要擷取的長度 re...

python unicode位元組串轉成中文問題

example 2 str russopho xe9bic,clichd and just pl xe9ain stupid.print str russopho?bic,clichd and just pl?ain stupid.str str decode unicode escape prin...