作者共发了1篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:不转换▼
 
点击 回复
550 0
【發現】我發現在Linux下的C++中(gcc編譯器),char字符數組本身就是UTF8編碼的!每個漢字占三字節
一派掌门 二十级
1楼 发表于:2016-1-1 11:08
例如:
#include <iostream>

using namespace std;

int main(void)
{
    char str[] = {'中' >> 16, '中' >> 8 & 0xff, '中' & 0xff, '\0'};
    cout << "Array size: " << sizeof(str) << endl;
    cout << str << endl;
    return 0;
}
輸出結果:
Array size: 4


其中代碼中的那個字符數組就相當於char str[] = "中";,上面只不過寫了展開形式。
因此,要想輸出UTF8的txt文本文件,直接用fputs或fwrite輸出就行了,根本不用進行任何轉換。

值得注意的是,在linux上編譯上述程序的時後,會出現警告:
g++ main.cpp -o main
main.cpp:7:16: warning: multi-character character constant [-Wmultichar]
  char str[] = {'中' >> 16, '中' >> 8 & 0xff, '中' & 0xff, '\0'};
                ^
main.cpp:7:29: warning: multi-character character constant [-Wmultichar]
  char str[] = {'中' >> 16, '中' >> 8 & 0xff, '中' & 0xff, '\0'};
                             ^
main.cpp:7:48: warning: multi-character character constant [-Wmultichar]
  char str[] = {'中' >> 16, '中' >> 8 & 0xff, '中' & 0xff, '\0'};
                                                ^
這是因為不同的編譯器,字符常量'中'表示的整數值不同。Linux下,'中'是三字節,而在Windows下卻是兩字節。

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:550 回复数:0
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-1-1 11:08
 
©2010-2025 Purasbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。