c语言实现字符串转gb2312
时间: 2023-09-28 09:10:48 浏览: 113
你可以使用iconv库来实现C语言中字符串的转换。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <iconv.h>
// 将字符串从UTF-8编码转换为GB2312编码
char* utf8_to_gb2312(const char* utf8_str) {
size_t in_len = strlen(utf8_str);
size_t out_len = in_len * 2; // 预估输出的长度,可能会有一些变化
char* gb2312_str = (char*)malloc(out_len);
iconv_t conv = iconv_open("GBK", "UTF-8"); // 使用iconv库进行编码转换
if (conv == (iconv_t)-1) {
perror("iconv_open");
free(gb2312_str);
return NULL;
}
char* inbuf = (char*)utf8_str;
char* outbuf = gb2312_str;
if (iconv(conv, &inbuf, &in_len, &outbuf, &out_len) == (size_t)-1) {
perror("iconv");
free(gb2312_str);
iconv_close(conv);
return NULL;
}
iconv_close(conv);
return gb2312_str;
}
int main() {
const char* utf8_str = "Hello, 中国!";
char* gb2312_str = utf8_to_gb2312(utf8_str);
if (gb2312_str != NULL) {
printf("GB2312 string: %s\n", gb2312_str);
free(gb2312_str);
}
return 0;
}
```
上述代码中的`utf8_to_gb2312`函数将传入的UTF-8编码字符串转换为GB2312编码字符串,并返回转换后的结果。注意,这里使用了iconv库来进行编码转换,需要包含`iconv.h`头文件,并在链接时加上`-liconv`参数。
请注意,该示例代码只是一个简单的示例,实际应用中还需要考虑更多的异常情况处理和内存管理。
阅读全文