libcurl(c++)中的波兰变音标记
Polish diacritical marks in libcurl (c++)
我只是对libcurl从服务器上获得的包含波兰语变音标记的文本有问题(例如,brow,ć,É,ł,ń,ó,ś,ż)。我正在尝试在Windows C++控制台应用程序中正确显示此文本。
我把类似的东西放在控制台屏幕上解决了类似的问题:
cout << "ąćęźół";
通过将我的源文件的代码页切换到:DOS代码页852(中欧)。不幸的是,它不适用于从libcurl传递的文本。我认为它只适用于直接写入代码的文本。你能告诉我一些有用的信息吗?我不知道如何解决这个问题。
我已经为我的问题编写了临时解决方案。它运行良好,但我不满足于这种方式:
char* cpl(const char* input)
{
size_t length = strlen(input);
char* output = new char[length+1];
/* Order of the diacretics
Ą ą Ć ć Ę ę
Ł ł Ń ń Ó ó
Ś ś Ź ź Ż ż
*/
const size_t pld_in[] = {
0xA1,0xB1,0xC6,0xE6,0xCA,0xEA,
0xA3,0xB3,0xD1,0xF1,0xD3,0xF3,
0xA6,0xB6,0xAC,0xBC,0xAF,0xBF,
};
const size_t pld_out[] = {
0xA4,0xA5,0x8F,0x86,0xA8,0xA9,
0x9D,0x88,0xE3,0xE4,0xE0,0xA2,
0x97,0x98,0x8D,0xAB,0xBD,0xBE
};
for(size_t i = 0; i < length; i++)
{
bool modified = false;
for(size_t j = 0; j < 18; j++)
{
if(*(input + i) == (*(pld_in + j)) + 0xFFFFFF00)
{
*(output + i) = *(pld_out + j);
modified = true;
break;
}
}
if(!modified)
*(output + i) = *(input + i);
}
*(output + length) = 0x00;
return output;
}
你能在不转换字符的情况下提出更好的解决方案吗?
libcurl返回的网页内容将使用网页的字符集。这里可能发生的情况是,它不是您的"代码集"使用的字符集,我认为这是MS Windows中区域设置的术语。
libcurl应该让您查看从服务器接收到的HTTP响应的头部。查看Content-Type:标头,它将指示返回的文本使用哪个字符集;然后查找哪个代码页使用相同的字符集。
相关文章:
- 发送一个带有libcurl C++问题的帖子请求:s
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 在 libcurl 连接池中预创建连接
- libcurl 和 DNS ttl 中的内部连接管理
- 如何在 cmake 库中包含 libcurl
- 如何应用 libcurl 的持久连接选项
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 组合字符串不适用于 libCurl,C++
- Poloniex API "Invalid command" c++ libcurl
- libcurl :显示正在运行的上传和下载速率
- c++ libCurl :如何使用libCurl接受过期的证书
- libcurl :C++处理多个异步请求
- 现代C++的libcurl和JSON问题
- 使用 Libcurl 库进行文件下载
- 如何在C++生成器中使用libcurl
- Libcurl c++ "undefined reference to" (Windows/MinGW/g++)
- 如何使用 libcurl 在本地 IP 上获取 HTML?
- 如何将带有 -F 选项的 curl 命令转换为 libcurl
- 如何使用 libCurl 将访问令牌发送到服务器 API
- C++ libcurl - 无法从 URL 检索整个 html 内容