用c语言写一个utf-8编码转GB2312的功能函数
时间: 2024-03-16 18:44:54 浏览: 235
UTF-8转GB2312函数
可以使用iconv库函数来实现UTF-8编码转换为GB2312编码,下面是一个示例函数:
```c
#include <iconv.h>
#include <string.h>
/*
* 将UTF-8编码的字符串转换为GB2312编码
* src: UTF-8编码的字符串
* dest: 转换后的GB2312编码字符串,调用前需要分配足够的空间
* dest_size: 转换后的字符串大小,调用后为实际转换后的大小
* 返回值: 转换成功返回0,失败返回-1
*/
int utf8_to_gb2312(const char *src, char *dest, size_t *dest_size) {
iconv_t cd = iconv_open("GB2312//IGNORE", "UTF-8//IGNORE");
if (cd == (iconv_t) -1) {
return -1;
}
size_t src_len = strlen(src);
size_t dest_len = *dest_size;
if (iconv(cd, (char **) &src, &src_len, &dest, &dest_len) == (size_t) -1) {
iconv_close(cd);
return -1;
}
*dest_size = dest_len;
iconv_close(cd);
return 0;
}
```
调用示例:
```c
char src[] = "你好,世界!";
char dest[100];
size_t dest_size = sizeof(dest);
if (utf8_to_gb2312(src, dest, &dest_size) == 0) {
printf("%s\n", dest);
}
```
输出结果:
```
你好,世界!
```
阅读全文