windows1251转utf-8C语言
时间: 2023-09-03 20:15:49 浏览: 139
我可以回答这个问题。Windows-1251 是一种字符编码,可以使用 iconv 函数将其转换为 UTF-8 编码。以下是一个 C 语言代码示例:
```c
#include <iconv.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
char *input = "\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82";
size_t input_size = 12;
size_t output_size = input_size * 2;
char *output = (char *) malloc(output_size + 1);
iconv_t cd = iconv_open("UTF-8", "WINDOWS-1251");
if (cd == (iconv_t) -1) {
perror("iconv_open");
return 1;
}
char *input_ptr = input;
char *output_ptr = output;
size_t input_bytes_left = input_size;
size_t output_bytes_left = output_size;
while (input_bytes_left > 0) {
if (iconv(cd, &input_ptr, &input_bytes_left, &output_ptr, &output_bytes_left) == (size_t) -1) {
perror("iconv");
return 1;
}
}
*output_ptr = '\0';
printf("%s\n", output);
iconv_close(cd);
free(output);
return 0;
}
```
这个程序将字节序列 `"\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82"` 转换为 UTF-8 编码的字符串 `"привет"`。请注意,这是一个简单的示例程序,实际使用中需要考虑更多的错误情况和边界条件。
阅读全文