Unicode 在C中使用iconv API

Unicode 在C中使用iconv API,unicode,shift-jis,Unicode,Shift Jis,我尝试使用iconv API将sjis字符串转换为utf-8。我已经成功地编译了它,但是输出不是我所期望的。 我的代码: 我只有随机数。有什么想法吗 编辑: 我的意见是 char utf8[] = "\xe4\xba\x9c"; //亜 输出应为: 0x88 0x9F 但事实上: 0x30 0x00 0x00 0x31 0x00…我无法复制该问题。我唯一能建议的就是小心你的分配 代码: 您的输入和输出是什么?谢谢-我在问题中添加了输入和输出。很高兴知道,我的函数本身没有错误。我将检

我尝试使用iconv API将sjis字符串转换为utf-8。我已经成功地编译了它,但是输出不是我所期望的。 我的代码:

我只有随机数。有什么想法吗

编辑: 我的意见是

char utf8[] = "\xe4\xba\x9c";       //亜
输出应为: 0x88 0x9F

但事实上:
0x30 0x00 0x00 0x31 0x00…

我无法复制该问题。我唯一能建议的就是小心你的分配

代码:
您的输入和输出是什么?谢谢-我在问题中添加了输入和输出。很高兴知道,我的函数本身没有错误。我将检查所有分配并在那里搜索问题-非常感谢,祝你圣诞快乐!你好,康斯坦丁。。如果UTF-8字符串没有空格,则此代码工作正常。但是当我在字符之间使用空格进行测试时,它不会转换空格后面的下一个字符。
char utf8[] = "\xe4\xba\x9c";       //亜
#include <iconv.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

void convertUtf8ToSjis(char* utf8, char* sjis){
 ...
}

int main(int argc, char *argv[])
{
  char utf8[] = "\xe4\xba\x9c";
  char *sjis;
  sjis = malloc(32);
  convertUtf8ToSjis(utf8, sjis);
  int i;
  for (i = 0; sjis[i]; i++)
  {
    printf("%02x\n", (unsigned char)sjis[i]);
  }
  free(sjis);
}
$ gcc t.c
$ ./a.out
88
9f