|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2018/10/2 23:03:58 |
标题: |
|
加入我的收藏 |
楼主: |
一个网页是gb2312编码的,用idhttp抓取了相应的内容,通过label.caption.但是在英文系统里面,会显示成乱码,不是说delphi已经是union了吗。我用的是xe版本。或者记得之前好像有个转换函数UTF8STRING.不懂是不是这个。
----------------------------------------------
- |
作者: |
|
2018/10/3 9:23:44 |
1楼: |
gb2312你理解成传统意义上的ansi. 要转换要用ansi去转
----------------------------------------------
--
|
作者: |
|
2018/10/3 11:34:56 |
2楼: |
TEncoding.Ansi
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
作者: |
|
2018/10/11 20:27:21 |
3楼: |
楼上的兄弟有没有实例呢?
----------------------------------------------
-
|
作者: |
|
2018/10/11 21:21:09 |
4楼: |
首先,你得用Ansi来转;其次,如果你的英文系统里没装中文字库,那也显示不出来(乱码)。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
|
作者: |
hs_kill (lzl_17948876) |
★☆☆☆☆ |
-
|
普通会员 |
|
2018/10/12 9:01:33 |
5楼: |
网页编码改成UTF-8吧 GB2312在没装相关中文编码的windows上是无法显示的
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
|
作者: |
|
2018/10/12 9:23:54 |
6楼: |
我老早就写了 跨平台 idhttp get ,支持多种编码。你服务器 用什么编码,我客户端都能显示出 HTML 内容。 当然,你服务器必须诚实,不能各种编码混合发。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2018/10/13 20:28:50 |
7楼: |
那个抓取的网页就是我自己写的。@hs_kill ,如果我网页编码改成UTF-8的话,用IDhttp抓取出来的就是乱码了
----------------------------------------------
-
|
作者: |
bmsr (白忙剩人) |
★☆☆☆☆ |
-
|
普通会员 |
|
2018/10/15 15:02:06 |
8楼: |
不要抓到string,要抓到stream了转完,再转成string
var Aurl: string; Response: IHTTPResponse; ms: TMemoryStream; rbs: RawByteString; AHtml: string; s: string; begin ms := TMemoryStream.Create; try Aurl := 'https://xxxx'; Response := NetHTTPClient1.Get(Aurl, ms); ms.Position := 0; SetLength(rbs, ms.Size); ms.Read(rbs[1], ms.Size); AHtml := UTF8ToString(rbs); finally ms.Free; end; end; 这样就不会有任何乱码了
----------------------------------------------
http://blog.sina.com.cn/bmsrnote
|
作者: |
|
2018/10/15 15:07:27 |
9楼: |
有本事地址发来,我用群里的 DEMO 给你 idhttp1.get 一下截图给你看。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2018/10/16 10:38:47 |
10楼: |
网页字符不要用 TMemoryStream, 用这个比较方便
此帖子包含附件:
大小:75.2K |
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
作者: |
|
2018/10/22 20:42:53 |
11楼: |
回楼上,我就是用的stringstream.但是在非中文系统上就是乱码 idhttp2 :=TIdHTTP.Create(Self); rStream:= TStringstream.Create; IdHTTP2.Get(website+'cn.html',rStream); astr := rStream.DataString; astr3:=copy(astr,pos('<h4>',astr)+4,500); update:=copy(astr3, 1,pos('</h4>', astr3)-1);
网页格式是这样的 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <h4>停止更新</h4> ...
----------------------------------------------
-
|
作者: |
|
2018/10/22 21:42:59 |
12楼: |
如果你用 D7,那么肯定非中文系统乱码。 新版本 是很简单的。
rStream:= TStringstream.Create(TEncoding.XXXXX('GBK'));
这个 XXXXX 就是对白痴的处罚。 我相信,正常人都能把 XXXXX 改成正确的代码。
不过,这样有个小问题。会导致 内存泄露。
怎么解决 泄露,也是很简单。只有白痴不会解决。
----------------------------------------------
(C)(P)Flying Wang
|
|