场景说明:
Android平台NDK调用iconv_open函数,实现UTF-8转GBK编码,没有达到预期的效果。尝试获取iconv_open函数失败的错误码。因为NDK的运行环境是Linux系统,所以尝试使用Linux获取错误码的机制,查看错误信息。
解决方案:
1)包含的头文件:
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
2)调用的情况:
errno = 0;//避免其他的错误影响到本次函数执行结果的判断
iconv_t cd = iconv_open("GBK", "UTF-8");
char* message = NULL;
if (errno != 0)
{
message = strerror(errno);
}
基本原理:errno作为一个系统全局的变量,定义在errno.h文件中,会在函数调用出错的情况下设置,通过strerror函数返回错误的具体信息,当前测试的结果,错误码是22,错误信息:Invalid argument,如果errno等于0,消息是:success