#include <stdio.h>
#include <iconv.h>
#include <stdlib.h>
int main() {
// 定义源字符集和目标字符集
const char *from_charset = "UTF-8";
const char *to_charset = "GBK";
// 打开转换描述符
iconv_t cd = iconv_open(to_charset, from_charset);
if (cd == (iconv_t)-1) {
perror("iconv_open failed");
return 1;
}
// 源字符串和目标缓冲区
const char *inbuf = "你好,世界";
size_t inbytesleft = strlen(inbuf);
char outbuf[1024];
char *outptr = outbuf;
size_t outbytesleft = sizeof(outbuf);
// 执行字符集转换
if (iconv(cd, &inbuf, &inbytesleft, &outptr, &outbytesleft) == (size_t)-1) {
perror("iconv failed");
iconv_close(cd);
return 1;
}
// 关闭转换描述符
iconv_close(cd);
// 输出转换后的结果
printf("Converted string: %s\n", outbuf);
return 0;
}
包含头文件:
#include <stdio.h>
:用于标准输入输出。#include <iconv.h>
:用于字符集转换函数。#include <stdlib.h>
:用于一些标准库函数。定义字符集:
const char *from_charset = "UTF-8";
:源字符集为 UTF-8。const char *to_charset = "GBK";
:目标字符集为 GBK。打开转换描述符:
iconv_t cd = iconv_open(to_charset, from_charset);
:打开一个从 UTF-8 到 GBK 的转换描述符。如果失败,返回错误信息并退出程序。准备源字符串和目标缓冲区:
const char *inbuf = "你好,世界";
:源字符串为 "你好,世界"。size_t inbytesleft = strlen(inbuf);
:计算源字符串的长度。char outbuf[1024];
:定义一个足够大的目标缓冲区。char *outptr = outbuf;
:指向目标缓冲区的指针。size_t outbytesleft = sizeof(outbuf);
:计算目标缓冲区的大小。执行字符集转换:
iconv(cd, &inbuf, &inbytesleft, &outptr, &outbytesleft);
:调用 iconv
函数进行字符集转换。如果转换失败,返回错误信息并关闭转换描述符后退出程序。关闭转换描述符:
iconv_close(cd);
:关闭转换描述符以释放资源。输出转换后的结果:
printf("Converted string: %s\n", outbuf);
:输出转换后的字符串。这个示例代码展示了如何使用 iconv
库在 Linux 系统中进行字符集转换。
上一篇:echo在linux是什么意思
下一篇:linux查看指定目录占用大小
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站