1 It s really strange that wprintf show Ω as 3A9 (UTF16), but wctomb convert wchar to CEA9 (UTF8), my locale is default en_US.utf8. As man-pages said, they should comform to my locale, but wpritnf use UTF16, why?
摘自。
in in UTF
UTF-8 (hex) 0xCE 0xA9 (cea9)
UTF-16(hex) 0x03A9 (03a9)
2 wprintf and printf just cannot be run in the same program, I have to choose to use either wprintf or printf, why?
见我的方案:
#include <stdio.h>
#include <wchar.h>
#include <stdlib.h>
#include <locale.h>
int main() {
setlocale(LC_ALL,""); // inherit locale setting from environment
int r;
char wc_char[4] = {0,0,0,0};
wchar_t myChar1 = L Ω ; //greek
// should comment out either wprintf or printf, they don t run together
r = wprintf(L"char is %lc (%x)
", myChar1, myChar1);//On Linux, to UTF16
r = wctomb(wc_char, myChar1); // On Linux, to UTF8
r = printf("r:%d, %x, %x, %x, %x
", r, wc_char[0], wc_char[1], wc_char[2], wc_char[3]);
}