【发布时间】:2017-03-09 12:09:20
【问题描述】:
我在 C 中使用 iconv.h 将编码从 ISO-8859-* 转换为 UTF-8。我需要在浏览器中显示传入的流。但是转换后的结果没有显示在 chrome 中。在其他浏览器中,它可以正常工作。
下面给出了一个字符串示例
char *str = "\x05\x86\x53";
char dest_str[100];
char *out = dest_str;
size_t inbytes = strlen(str);
size_t outbytes = sizeof dest_str;
printf("Before Conversion: %2x %2x %2x\n",str[0],str[1],str[2]);
iconv_t conv = iconv_open("UTF-8//TRANSLIT", "ISO-8859-9");
if (conv == (iconv_t)-1) {
perror("iconv_open");
return 1;
}
if (iconv(conv, &str, &inbytes, &out, &outbytes) == (size_t)-1) {
perror("iconv");
return 1;
}
dest_str[sizeof dest_str - outbytes] = 0;
printf("After Conversion: %2x %2x %2x\n",dest_str[0],dest_str[1],dest_str[2]);
puts(dest_str);
输出:转换前:5 ffffff86 53
转换后:5 ffffffc2 ffffff86
转换是否正确进行?如何解决chrome中无法显示字符的问题?
【问题讨论】:
-
你希望展示什么?
标签: html c encoding utf-8 iconv