同樣的c代碼,為何在windows下和linux下執行結果不一樣?

來源:互聯網
上載者:User

代碼如下:

#include <stdio.h>#include <string.h>int main()  {  char *in_utf8 = "你在幹嗎呢";char *in_gb2312 = "安裝超人";char *in_eng = "English man";printf("len1=%d, len2=%d, len3=%d\n", strlen(in_utf8), strlen(in_gb2312), strlen(in_eng));return 0;}

在windows下,運行結果為:len1=10, len2=8, len3=11

在linux下,結果為:len1=15, len2=12, len3=11

為何會有這樣的差別呢??

可以看得出,對於英文,長度都是一樣的。但對於中文,在windows下,每個漢字佔2位元組,在linux卻是佔3位元組。

我猜測:因為在linux下預設的字元編碼為UTF-8的,所以每個漢字佔3個位元組。但是在windows,系統的編碼方式是簡體中文,所以只佔2個位元組。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.