小编dav*_*avy的帖子

将wchar打印到Linux控制台?

我的C程序粘贴在下面.在bash中,程序打印"char is",Ω不打印.我的语言环境都是en_US.utf8.

#include <stdio.h>
#include <wchar.h>
#include <stdlib.h>

int main() {
   int r;
   wchar_t myChar1 = L'?';
   r = wprintf(L"char is %c\n", myChar1);
}
Run Code Online (Sandbox Code Playgroud)

c linux console wchar-t wchar

8
推荐指数
2
解决办法
9653
查看次数

Linux上的wprintf UTF16(应该是UTF8)?

1 wprintf将'Ω'显示为3A9(UTF16),但wctomb将wchar转换为CEA9(UTF8),我的语言环境默认为en_US.utf8,这真的很奇怪.正如man-pages所说,它们应该符合我的语言环境,但wpritnf使用UTF16,为什么?

摘自http://www.fileformat.info/info/unicode/char/3a9/index.htm

Ω为UTF

UTF-8(十六进制)0xCE 0xA9(cea9)

UTF-16(十六进制)0x03A9(03a9)

2 wprintf和printf只是无法在同一程序中运行,我必须选择使用wprintf或printf,为什么?


看我的计划:

#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)\n", myChar1, myChar1);//On Linux, to UTF16

  r = wctomb(wc_char, myChar1); // On Linux, to UTF8
  r = printf("r:%d, %x, %x, %x, %x\n", r, …
Run Code Online (Sandbox Code Playgroud)

c linux console wchar-t wchar

1
推荐指数
1
解决办法
4966
查看次数

标签 统计

c ×2

console ×2

linux ×2

wchar ×2

wchar-t ×2