IdHttp 10获取包含韩文的网站源码时出现乱码,如何解决?(200分)

  • 主题发起人 主题发起人 ljdzxx
  • 开始时间 开始时间
L

ljdzxx

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi 6+Indy 10控件
代码片段如下:
url:='http://www.ublove.com/cng/search/Profile.asp?userid=sexygirl486';
buff:=TMemoryStream.Create;
IdHttp1.Get(url,buff);
buff.SaveToFile('d:/ublove.htm');
//到这一步为止没有问题,保存下来的网页可以正常显示韩文
Memo1.Lines.LoadFromFile('d:/ublove.htm');
//这句就有问题了,显示出来的全是乱码,应该是Memo控件不支持Utf-8编码的缘故
Memo1.Lines.Text:=Utf8ToAnsi(Memo1.Lines.Text);
//进行Ansic转换,问题来了,韩问部分显示为???????,简体中文部分就没问题,我想应该是Utf8ToAnsi这个函数无法解码韩文的Utf-8编码吧,那有什么其他的函数可以代替吗?


又再作如下尝试:
url:='http://www.ublove.com/cng/search/Profile.asp?userid=sexygirl486';
buff:=TMemoryStream.Create;
IdHttp1.Get(url,buff);
size:=buff.Size;
setLength(str,size);
buff.ReadBuffer(str[1],size);
str:=StringReplace(str,'''','''''',[rfReplaceAll]);
with ADOQuery1 do begin
Sql.Text:='Insert Into Table1 (html) values ('''+str+''')';
ExecSql;
end;
//用该方法将抓取到的内容存入到数据库后,用网页显示出来也全是乱码,查看源码也和利用第一种方法直接存到硬盘的d:/ublove.htm这个文件完全不一样,请问如何解决此韩文问题?我同样用简体中文的Utf-8编码的网页测试过都没有问题的,关键是一有韩文就有问题了,全变成乱码,200分求高人指点(另:我机器是winxp,装过韩文输入法,韩文字体,我打开记事本都可以直接输入韩文的,office和ie中显示都没有问题,就是在delphi中就有问题)
 
Memo1 的字体设置一下成韩文不就可以了吗
 
原因根本不在那里~~
你的utf-8方法应用错了~~


procedureTForm1.btn1Click(Sender:TObject);
var
Dest:Pchar;
Unic:PWidechar;
str:string;
NewDest:PwideChar;
begin
GetMem(Unic,100);
try
GetMem(Dest,100);
UnicodeToUtf8(Dest,StringToWideChar('中国',Unic,100),100);
try
str:=StrPas(Dest);
ShowMessage('utf8的编码为:'+Str);
GetMem(NewDest,100);
try
Utf8toUnicode(NewDest,Dest,100);
ShowMessage('原始的字符为:'+WideCharToString(NewDest));
finally
FreeMem(NewDest);
end;
finally
FreeMem(Dest);
end;
finally
FreeMem(Unic);
end;
end;

改成你需要的函数,即可~~~

接分~~
 
Mclkings你实现的好像就是AnsiToUtf8和Utf8ToAnsi这两个函数,不过还是要感谢你。
我的问题好像并不出在函数,因为我在记事本中可以输入韩文,在Delphi的代码编辑器中为何输入韩文时显示的却是?????这样的字符?谁能解决这个问题?
因为我要把韩文插入SQL中,而现在的问题是我根本无法把韩文传入SQL中,只要是韩文就不管用什么函数转都是?????,我想可能是和操作系统有关的,如果我是韩文版的XP肯定不会有这个问题。
 
你那个网站是utf-8的格工的好吧~~~~

你第一步是转换格式。并不是写语言的~~

utf-8 是通用格式的~~~
 
我当然知道那网页是utf8格式,所以才用Utf8ToAnsi函数去转啊,我试过纯中文的Utf8用这函数转是完全没问题的,关键是有韩文,而且我在Sql Server的企业管理器中执行Insert Into table1 (str) values ('这里是韩文')这句都会出错,插进去的全是?????这样的问号,而直接粘贴到那个字段里去就没问题呢,真搞不懂,好急啊没人能帮帮忙吗
 
Sql Server的问题我已经解决了,谁能把“鏃犳爣棰樻枃”这句还原成汉字?还有
-----------------------------------------------------------------------
頃犽”~~^^<br>
旃滉惮 毵岆摛甑?鞁鹅柎靹?臧
 
http://www.17777.com.cn/soft/1116.htm

下载这个,安装上~~ 试试~~~
 
你向数据库保存的时候本身就不应该以韩文格式保存,而应该保存UTF8编码后的数据

读出的时候再转换
 
楼主,Delphi的memo组建不支持unicode编码!所以,你的转换不行的,要用TNT的UnicodeMemo控件才行!你去下载一个TNT Unicode的组件包,替换Memo就行了。
 
我试过TNT的Unicode控件,不行的,zqw0117你可以试下,就是
http://www.ublove.com/cng/search/Profile.asp?userid=sexygirl486
这网页的源码,你把他存下来后装到TntMemo里试试,还是乱码的
 
这个编码问题累了我好长时间了一直没解决,看这里:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3478485
 
没找到解决办法。。。。。郁闷。。。。。
 
var
Str1: String;
begin
Str1 := '璇峰厛鐧诲綍';
Str1 := Utf8ToAnsi(Str1);
ShowMessage(Str1);


给分。~~~
 
后退
顶部