永发信息网

100财富给牛逼之人!就没人知道在linux下用c语言如何将汉字的unicode编码转化为汉字吗?

答案:4  悬赏:20  手机版
解决时间 2021-11-08 02:16
  • 提问者网友:流星是天使的眼泪
  • 2021-11-07 10:35
100财富给牛逼之人!就没人知道在linux下用c语言如何将汉字的unicode编码转化为汉字吗?
最佳答案
  • 五星知识达人网友:掌灯师
  • 2021-11-07 12:14
试试这个四个函数,C 里面的,Linux 可用:
mbtowc
wctomb
mbstowcs
wcstombs
在 Linux 下试试看吧:
#include
#include
#include
int main(void)
{
size_t cch;
char psz[1024];
wchar_t pwsz[] = { 0x52B3, 0x788C, 0x788C, 0 };
setlocale(LC_ALL, "");
cch = wcstombs(psz, pwsz, 1024);
if (cch != 0 && cch != -1) {
printf("%s", psz);
}
return 0;
}
zdl_361 说的 "utf8 劳碌碌" 不对,因为我也输出 "劳碌碌",而我是用 Unicode 编码的。在 Windows 上,char 是 ANSI,Unicode (wchar_t) 是 UTF-16;在 Linux 上,char 是 UTF-8,Unicode (wchar_t) 是 UTF-32。不过对于这个函数来说,在哪个平台上都不会因为字符编码而影响使用。
全部回答
  • 1楼网友:煞尾
  • 2021-11-07 14:03
我也在找答案,有号的告诉我一声
  • 2楼网友:長槍戰八方
  • 2021-11-07 13:57
我得知道这是什么编码。utf8?
解读完是乱码。
52B3788C788C你从哪里复制的?追问就是接收短信时收到的unicode码流~我要提取内容追答你再看看有没有抄错。
utf8 劳碌碌追问dui 这是我随便发的
  • 3楼网友:低血压的长颈鹿
  • 2021-11-07 12:33
除了iconv命令,我们在linux系统下的man page的第三节还可以看到一组iconv函数。它们分别是
  iconv_t iconv_open(const char *tocode, const char *fromcode);
  size_ticonv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
  int iconv_close(iconv_t cd);
  iconv_open函数用来打开一个编码转换的流,iconv函数的作用是实际进行转换,iconv_close函数的作用就是关闭这个流。实际用法参见下面的例子,下面是一个将UTF-8码转换成GBK码的例子,我们假设已经有了一个uft8编码的输入缓冲区inbuf以及这个缓冲区的长度inlen。
  iconv_t cd = iconv_open( "GBK", "UTF-8");
  char *outbuf = (char *)malloc(inlen * 4 );
  bzero( outbuf, inlen * 4);
  char *in = inbuf;
  char *out = outbuf;
  size_t outlen = inlen *4;
  iconv(cd, &in, (size_t *)&inlen, &out,&outlen);
  outlen = strlen(outbuf);
  printf("%s\n",outbuf);
  free(outbuf);
  iconv_close(cd);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯