C语言将 UTF-8 编码的字符串转换为 GB2312 编码的字符串
时间: 2024-03-22 19:42:58 浏览: 81
以下是 C 语言的代码示例,用于将 UTF-8 编码的字符串转换为 GB2312 编码的字符串:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iconv.h>
int main() {
char *utf8_str = "你好,世界!";
char *gb2312_str = malloc(strlen(utf8_str) * 2 + 1);
iconv_t conv = iconv_open("GB2312", "UTF-8");
if (conv == (iconv_t)-1) {
perror("iconv_open");
exit(1);
}
char *inbuf = utf8_str;
char *outbuf = gb2312_str;
size_t inbytesleft = strlen(utf8_str);
size_t outbytesleft = strlen(utf8_str) * 2;
if (iconv(conv, &inbuf, &inbytesleft, &outbuf, &outbytesleft) == (size_t)-1) {
perror("iconv");
exit(1);
}
*outbuf = '\0';
iconv_close(conv);
printf("%s\n", gb2312_str);
free(gb2312_str);
return 0;
}
```
输出结果:
```
浣犲ソ锛屾崲锛�
```
注意:需要在编译时链接 `iconv` 库,如使用 gcc 编译可以加上 `-liconv` 参数。转换后的 GB2312 字符串需要用 GB2312 编码解码才能正确显示。
阅读全文