C语言 UTF8 转 GBK
时间: 2024-01-01 20:51:58 浏览: 72
utf8转gbk-C语言完美版.rar
C语言本身并不直接支持UTF-8和GBK之间的转换,需要使用第三方库来实现。
一个常用的库是iconv,它可以在Linux和Windows等平台上使用。下面是一个使用iconv库将UTF-8转换为GBK的例子:
```c
#include <stdio.h>
#include <iconv.h>
#include <string.h>
int main() {
char *utf8_str = "你好,世界!";
char *gbk_str = malloc(strlen(utf8_str) * 2 + 1);
memset(gbk_str, 0, strlen(utf8_str) * 2 + 1);
iconv_t cd = iconv_open("GBK", "UTF-8");
if (cd == (iconv_t)-1) {
perror("iconv_open");
return 1;
}
size_t in_len = strlen(utf8_str);
size_t out_len = strlen(gbk_str);
if (iconv(cd, &utf8_str, &in_len, &gbk_str, &out_len) == -1) {
perror("iconv");
return 1;
}
printf("%s\n", gbk_str);
iconv_close(cd);
return 0;
}
```
在这个例子中,我们首先定义了一个UTF-8编码的字符串,然后使用malloc函数动态分配了一个足够大的空间来存储转换后的GBK编码字符串。接着我们使用iconv_open函数打开了一个转换句柄,并指定了输入编码和输出编码。然后通过iconv函数将输入的UTF-8字符串转换为GBK字符串,并将结果存储在我们之前分配的空间中。最后我们输出了转换后的结果,并在最后使用iconv_close函数关闭了转换句柄。
需要注意的是,在实际使用中我们应该检查iconv_open和iconv函数的返回值,以避免出现错误。
阅读全文