c++ - 如何从 HTML 页面获取字符集

标签 c++ html linux character-encoding content-encoding

我正在尝试获取任何 HTML 元标记中的字符集属性。 (即 < meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" > ) 有什么办法可以在 linux 下的 C++ 中做到这一点。我使用 HTML tidy 作为解析器,但我无法获得该属性返回任何与 us-ascii 不同的东西(即使编码是 utf-8)
这是我得到的输出: *.*4 节点:元
名称属性:http-equiv
值属性:Content-Type
名称属性:内容
值属性:text/html; charset=us-ascii

最佳答案

根据 Vinko Vrsalovic 的要求,这里是获得该结果的代码:
void dumpNode(TidyNode tnod, int indent)
{
TidyNode 子节点;

对于 ( child = tidyGetChild(tnod); child; child = tidyGetNext(child) )
{
ctmbstr 名称;
切换 ( tidyNodeGetType(child) )
{
case TidyNode_Root: name = "Root";打破;
case TidyNode_DocType: name = "DOCTYPE";打破;
case TidyNode_Comment: name = "评论";打破;
case TidyNode_ProcIns: name = "处理指令";打破;
case TidyNode_Text: name = "文本";打破;
案例TidyNode_CDATA:名称=“CDATA”;打破;
case TidyNode_Section: name = "XML Section";打破;
case TidyNode_Asp: name = "ASP";打破;
case TidyNode_Jste: name = "JSTE";打破;
case TidyNode_Php: name = "PHP";打破;
case TidyNode_XmlDecl: name = "XML 声明";打破;

案例 TidyNode_Start:
案例 TidyNode_End:
案例 TidyNode_StartEnd:
默认值:
name = tidyNodeGetName( child );
TidyAttr att = tidyAttrFirst( child );
而(att)
{
std::cout <<"名称属性:"<< tidyAttrName(att) << std::endl;
std::cout<<"值属性:"<< tidyAttrValue(att) << std::endl;
att = tidyAttrNext(att);

打破;

断言(名称!= NULL);
printf( "%d*.*%d%sNode: %s\n", indent, indent, "", name );
dumpNode( child, indent + 4 );


void dumpHtml(TidyDoc tdoc)
{
dumpNode(tidyGetHtml(tdoc),0);

int main(int argc, char **argv) {
std::string toReturn("");
TidyBuffer输出;
TidyBuffer errbuf;
int rc = -1;
bool 确定;

tidyBufInit(&output);
tidyBufInit(&errbuf);

TidyDoc tdoc = tidyCreate();
ok = tidyOptSetBool(tdoc, TidyXhtmlOut, 是的);//转换为 XHTML
如果(好)
rc = tidySetErrorBuffer( tdoc, &errbuf );//捕获诊断信息
如果 ( rc >= 0 )
rc = tidyParseFile(tdoc, "fuebuena.html");//解析输入
如果 ( rc >= 0 )
rc = tidyCleanAndRepair( tdoc );//整理一下!
如果 (rc >= 0)
dumpHtml(tdoc);

返回 0;

关于c++ - 如何从 HTML 页面获取字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/170988/

相关文章:

c++ - 在 native Windows 应用程序的资源中嵌入文本文件

c++ - 模板函数中的静态对象是否有链接?

c++ - 获取模拟 Cairo::Context 以测试路径上的条件

html - 为什么 after 伪元素在 firefox 中绝对定位时会移动一个额外的像素?

linux - 控制台Ant下ActiveMQ无法运行的例子

c++ - 将指针转换为二维数组

php - 我的查询没有找到结果

javascript代码永远不会再执行

linux - 如何在 am335x evm 中的 NAND 闪存中创建分区?

linux - 从变量执行linux命令