gpt4 book ai didi

假设 UTF-8 将 =C3=B6 转换为 ö

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:12 26 4
gpt4 key购买 nike

所以我正在尝试阅读一封电子邮件,它以引用可打印的方式编码,因此包含例如:

=C3=B6

应该转换成

ö

所以我知道 c3b6 是 utf-8ö 的十六进制表示,但我实际上无法理解如何转换 char * str = '=C3=B6'char * str 'ö'

我正在使用 linux,但会将代码移植到 Windows,因此我需要一个多平台解决方案。

我该怎么做?

最佳答案

让 OP 开始的东西。

解析字符串 "=C3=B6",寻找 2 个字节作为十六进制字符。然后形成一个要打印的字符串(并希望 printf 将解释为 UTF-8)- 符合 printf("%s", ...) 的编译器有“No special为多字节字符制定了规定”。 YMMV .

#include "stdio.h"
int main() {
char * str = "=C3=B6";
printf("%s\n", str);
printf("1 %s\n", "ö");
printf("2 %s\n", "\xC3\xB6");
unsigned char a[3] = { 0 };
if (sscanf("=c3=b6", "=%hhx=%hhx", &a[0], &a[1]) == 2) {
printf("3 %s\n", a);
}
return 0;
}

输出

=C3=B6
1 ö
2 ö
3 ö

关于假设 UTF-8 将 =C3=B6 转换为 ö,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54333893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com