如何获取html中的汉字!给出完整代码的一定首先给分!

taianmonkey 2005-04-18 03:39:19
如何获取html中的汉字!最好不是读写文件的方法,那样准确性不高!最好是完整代码!
...全文
285 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
no_bug 2005-05-20
  • 打赏
  • 举报
回复
收藏
vick 2005-05-19
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------
// 把/字符换成换行符,把^字符换成=号,把+号变为%A1 如果是汉字内码则转换为汉字
AnsiString TRequest::ParseParams(AnsiString tt)
{
int n;

//把汉字内码提取出来
/*
把等号后面&前的字串符串送入 StrToHz 函数进行过滤。如果是汉字内码则以汉字代替
*/
AnsiString ss(tt),aa(""),bb("");
int n1=0,n2=0;
//算法:对等号后的数据进行替换。把替换数据前的等号换为^符 ,直到把所有等号后面的数据
//替换完,把所有的=符换为^
while (1)
{

n1 = ss.Pos("=");
if ( n1 ==0 ) break;
ss.Delete(n1,1);
n2 = ss.Pos("&");

if ( n2!=0 )
{
aa = ss.SubString (n1,n2-n1);
aa = aa+ "%";
bb = StrToHz ( aa.c_str() );
bb = "^"+ bb;
bb = bb + "\"" ;
ss.Delete(n1,n2-n1+1);
ss.Insert (bb, n1 );
}
//内容的结尾无&符
else
{
aa = ss.SubString (n1,500);
aa = aa+ "%";
bb = StrToHz ( aa.c_str() );
bb = "^"+ bb ;
ss.Delete(n1,500);
ss.Insert ( bb, n1 );
}
}//while

tt = ss;
//把\字符换成换行符
while (1) {
n= tt.Pos("\"");
if ( n==0) break;
tt.Delete(n,1);
tt.Insert("\r\n",n);
}
tt += "\r\n";
//把^字符换成=号
for (int n=1; n<=tt.Length(); n++)
if (tt[n]=='^') tt[n]='=';

//把+字符换成

for (int n=1; n<=tt.Length(); n++)
if (tt[n]=='+') tt[n]=' ';

return tt;
}

/*
把 汉字的内码转换为汉字
输入:
汉字的内码字符串 format 1."%CC%C6%B2%AE%BB%A2iloveyou%" ASCII字符在内码中或最后
2."iloveyou%CC%C6%B2%AE%BB%A2%" ASCII字符在最前或无内码
输出:
汉字
*/
AnsiString TRequest::StrToHz(char* str)
{

//分离其他的字母或数字等符号
AnsiString aa,ss(str);
ss.Trim ();
AnsiString mm(""),nn("");
char * hz;
char tmp[3];
char hex[4];
int n1=0,n3=0,n4=0;
int len = strlen (str);
hz = new char[len];
ZeroMemory (hz,len );
int i=0;
//字符串符号是否在汉字前
n1 = ss.Pos ("%");
//格式2
if ( n1 !=1 )
{
strcpy (hz, ss.SubString(1,n1-1).c_str());
i = n1-1;
aa = ss.SubString ( n1 ,len-n1+1);
}
else
aa = str;
//格式1
while (1)
{
n3 = aa.Pos ("%");
if ( n3 ==0 ) break;
aa.Delete( n3,1);
n4 = aa.Pos ("%");
if ( n4 ==0 ) break;

mm = aa.SubString (n3,n4-n3);
int len2= mm.Length();
//汉字的2个内码加上其他字符
if ( len2 >2 )
{
//提取出前两个内码
strcpy (tmp, mm.SubString (1,2).c_str() );

nn.sprintf("0x%s",tmp);
hz [i]= nn.ToInt ();
i++;
//把后面的字符拷贝到数组中
memcpy (hz+i, mm.SubString(3,len2-2).c_str(),len2-2 );

i = i+len2-2;

}
//只有汉字的2个内码
else if ( len2==2 )
{
strcpy (tmp,mm.c_str() );

nn.sprintf("0x%s",tmp);
hz [i] = nn.ToInt ();
i++;
}


}

hz[ strlen(hz) ]= '\0';
ss = hz;
delete[] hz;

return ss;
}
Hendy_So 2005-05-16
  • 打赏
  • 举报
回复
为什么读文件准确性不高?你的目的?
easthg 2005-05-16
  • 打赏
  • 举报
回复
我知道的 HTML 中存在汉字的形式好象有两种:
1) 呵呵,就是汉字了,,
2)采用UTF 8 编码 (张 = %E5%BC%A0),

其他的工作就需要你自己好好分析了。
shicheng521 2005-05-16
  • 打赏
  • 举报
回复
两个星呀
什么时候能有一个星呀
taianmonkey 2005-04-18
  • 打赏
  • 举报
回复
有高手吗?

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧