21-1 �������ΡG����������c²����

¦b ASP ¤¤¡A§Ú­Ì¥i¥H¨Ï¥Î·L³n§@·~¨t²Î¤º«Øªº WinHttp.WinHttpRequest.5.1 ¤¸¥ó¨Ó§ì¨ú¨ä¥Lºô­¶¸ê°T¡A¶i¦æ³B²z«á¡A¦A®i¥Ü³B²z«áªºµ²ªG¡C¨Ò¦p¡A¤U¦C½d¨Ò¨Ï¥Î WinHttp.WinHttpRequest.5.1 ¤¸¥ó¨Ó§ì¨ú Google ªº­º­¶¡]http://www.google.com.tw¡^¡AµM«áÅã¥Ü¦¹ºô­¶ªº­ì©l½X¡A¦p¤U¡G

Example¡]getWebPage/showSource01.asp¡^¡G

¤W­z½d¨Òªº­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]getWebPage/showSource01.asp¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<%@language=JScript%>
<% title="§ì¨ú utf-8 ºô­¶¨ÃÅã¥Ü­ì©l½X" %>
<!--#include file="../head.inc"-->
<hr>
<%
url="http://www.google.com.tw";		// The URL to download
httpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
httpReq.Open("GET", url, false);
httpReq.Send();			// Download the file
content = httpReq.ResponseText;
%>

<fieldset>
<legend><a target=_blank href="<%=url%>"><%=url%></a> ªº­ì©l½X</legend>
<xmp><%=content%></xmp>
</fieldset>

<hr>
<!--#include file="../foot.inc"-->

¦b¤W­z½d¨Ò¤¤¡A¥Ñ©ó Google ªº­º­¶¬O¥H utf-8 ½s½X¡AWinHttp.WinHttpRequest.5.1 ­è¦n¯à°÷¤ä´©¡A©Ò¥H¤@¤Á¨S¦³°ÝÃD¡C¦ý¬O¦pªG§A­n§ìªººô­¶¬O¥H big5 ½s½X¡A¨º¦^¶Çªº¤º®e¥²¶·¸g¥Ñ½s½X¹Lµ{¡A¤~¯à§e²{¥¿½Tµ²ªG¡A§_«h´N·|¥X²{¶Ã½X¡C¦b¤U­±³o­Ó½d¨Ò¤¤¡A§Ú­Ì§ì¨ú¤@­Ó¤j¤­½Xªººô­¶¡A¨Ã¨Ï¥Î¥t¥~¤@­Ó¤¸¥ó adodb.stream ¨Ó¶i¦æ½s½X¡G

Example¡]getWebPage/showSource03.asp¡^¡G

¤W­z½d¨Òªº­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]getWebPage/showSource03.asp¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<%@language=JScript%>
<% title="§ì¨ú big5 ºô­¶¨ÃÅã¥Ü­ì©l½X" %>
<!--#include file="../head.inc"-->
<hr>
<%
url = "http://neural.cs.nthu.edu.tw/jang/books/html/example/image02.htm";
// Step 1: ¨Ï¥Î WinHttp.WinHttpRequest ¤¸¥ó¨Ó§ì¨úºô­¶
WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET", url, false);
WinHttpReq.Send();			// Download the file
content = WinHttpReq.ResponseBody;	// §ì¦^ binary ªº¸ê®Æ
// Step 2: ¨Ï¥Î adodb.stream ¤¸¥ó¨Ó¶i¦æ¤å¥ó½s½X
oStream = new ActiveXObject("adodb.stream");   
oStream.Type=1;			// ¥H¤G¶i¦ì¤è¦¡¾Þ§@
oStream.Mode=3;			// ¥i¦P®É¶i¦æÅª¼g
oStream.Open();			// ¶}±Òª«¥ó
oStream.Write(content);		// ±N content ¼g¤Jª«¥ó¤º
oStream.Position=0;		// ±qÀY¶}©l
oStream.Type=2;			// ¥H¤å¦r¼Ò¦¡¾Þ§@
oStream.Charset="Big5";		// ³]©w½s½X¤è¦¡
result= oStream.ReadText();	// ±Nª«¥ó¤ºªº¤å¦rŪ¥X
%>

<fieldset>
<legend><a target=_blank href="<%=url%>"><%=url%></a> ªº­ì©l½X</legend>
<xmp><%=result%></xmp>
</fieldset>

<hr>
<!--#include file="../foot.inc"-->

¦b¤W­z½d¨Ò¤¤¡A§Ú­Ì¨Ï¥Î¤F adodb.stream ¤¸¥ó¡A¦¹¤¸¥ó´£¨Ñ¤F³B²z binary ¤Î ascii ¸ê®Æªº¦UºØ¤èªk¡A¥\¯à«Ü±j¤j¡C½d¨Ò­ì©l½X¦³¬ÛÃöµù¸Ñ¡A¦b¦¹¤£¦AÂØ­z¡C­Y­nª¾¹D¦¹¤¸¥óªº¨ä¥L¥Îªk¡AŪªÌ¥i¥H¦b Google ¿é¤J adodb.stream¡A´N¥i¥H§ä¨ì¬ÛÃöªººô­¶»¡©ú¡C

§Ú­Ì¤]¥i¥H§ì¥Xºô­¶«á¡A¥ß¨è¨Ï¥Î¥t¤@­Ó¤¸¥ó Hokoy.WordKit ¨Ó±N¦¹ºô­¶¤º®eÂন²Åé¤å¦r¡A¦A§e²{©óºô­¶¡A½d¨Ò¦p¤U¡G

Example¡]getWebPage/big5toGb01.asp¡^¡G

¡]­Y¤W­z½d¨ÒµLªk¥¿½T§e²{¡A«hªí¥Ü¹ïÀ³¦øªA¾¹©|¥¼¦w¸Ë Hokoy.WordKit ¤¸¥ó¡C¡^¦¹½d¨Òªº­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]getWebPage/big5toGb01.asp¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<%@language=jscript%>
<%title="§ì¨úÁcÅéºô­¶¨Ã¥H²Åé§e²{"%>
<%
url = "http://neural.cs.nthu.edu.tw/jang/books/html/example/image02.htm";
// Step 1: ¨Ï¥Î WinHttp.WinHttpRequest ¨Ó§ì¨úºô­¶
WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET", url, false);
WinHttpReq.Send();			// Download the file
content = WinHttpReq.ResponseBody;
// Step 2: ¨Ï¥Î adob.stream ¨Ó¶i¦æºô­¶¸ê®Æ½s½X
oStream = new ActiveXObject("adodb.stream");   
oStream.Type=1;
oStream.Mode=3;
oStream.Open();
oStream.Write(content);
oStream.Position=0;   
oStream.Type=2;
oStream.Charset="Big5"   
result= oStream.ReadText();
// Step 3: ¨Ï¥Î Hokoy.WordKit ¨ÓÂà´«¦¨Â²Åé
wordToolObj = new ActiveXObject("Hokoy.WordKit");
gbContent=wordToolObj.Big5toGB(result);
// Step 4: §ïÅܺô­¶½s½X¨Ã±N¸ê®Æ§e²{©óºô­¶
Response.Charset="gb2312";
Response.Write(gbContent);
%>

¦b¤W­z½d¨Òªº­ì©l½X¤¤¤¤¡A¥i¥H¬Ý¥X§Ú­Ì°µªk¦p¤U¡G

  1. ¨Ï¥Î WinHttp.WinHttpRequest.5.1 ¤¸¥ó¨Ó§ì¨ú¤@­Óºô­¶ªº¤º®e¡C
  2. ¨Ï¥Î adodb.stream ¤¸¥ó¨Ó±N©Ò§ì¨ìªº binary ¸ê®ÆÂର big5 ½s½X¡C
  3. ¨Ï¥Î Hokoy.WordKit ¤¸¥ó¨Ó±NÁcÅéÂন²Åé¡C
  4. ¨Ï¥Î Response.Charset ¨Ó±Nºô­¶½s½X§ï¬° "gb2312" ªºÂ²Åé½s½X¡A¨Ã±N¸ê®Æ¼g¤Jºô­¶¡C

¦ý¥Ñ©ó§Ú­Ì¥ý±Nºô­¶¤º®eÂন²Åé«á¡A·|¦b¤£¦Pªº¸ô®|§e²{ºô­¶¡A¦]¦¹©Ò¦³¬Û¹ï¸ô®|ªº³sµ²³£·|µo¥Í¿ù»~¡C¬°¸Ñ¨M¦¹°ÝÃD¡A§Ú­Ìªºµ{¦¡½X¥²¶·¯à°÷§PÂ_¬Û¹ï¸ô®|³sµ²ªº¦s¦b¡A¨Ã±N¤§§ï¦¨µ´¹ï¸ô®|¡A¦A§e²{©ó·sºô­¶¡A§Ú­Ì±N³o¤@³¡¥÷ªº¹ê§@·í§@¥»³¹ªº²ßÃD¡C

¦¹¥~¡A¤W­z½d¨Ò¤¤ªº Hokoy.WordKit ¬O¤@­Ó«Ü¦n¥Îªº¤¸¥ó¡A°£¤F¥i¥H±N¤¤¤åÁcÅéÂন²Åé¥~¡AÁÙ¥i¥H¶i¦æ¦UºØ¤¤¤åÂà½X¡C¦¹¤¸¥ó¥i¥Ñ¡u¦Ñ­J¯MµH¾÷¡v©Ò´£¨Ñ¡A¥i¥Ñ¤U¦Cºô§}¤U¸ü¡G

http://reg.softking.com.tw/freeware/index.asp?fid1=3&fid2=260&fid3=22195
¤U¸ü Hokoy.WordKit.dll «á¡A½Ðµù¥U¦¹¤¸¥ó¡G
  1. ±N Hokoy.WordKit.dll ©ñ¨ì c:\windows\system32 ¥Ø¿ý¤U¡C
  2. ¶}±Ò DOS µøµ¡¡A¶i¤J c:\windows\system32 ¥Ø¿ý¤U¡A¦b DOS µøµ¡¿é¤J¡uregsvr32 Hokoy.WordKit.dll¡v¡A«ö¡u½T©w¡v«á§Y§¹¦¨¦w¸Ë¡C

Hint
¥Ø«e¦¹ Hokoy.WordKit ¤¸¥ó¶È¯à¥Î¦b 32-bit Windows ¥­¥x¡C

¦¹ Hokoy.WordKit ¤¸¥ó¥\¯à¥i¥H¦Cªí¦p¤U¡G

¨ç¦¡¦WºÙ¿é¤J½s½XÃþ§O¿é¥X½s½XÃþ§O
GBtoBig5GBBig5
BIG5toGBBig5GB
GBtoUnicodeGBUnicode
Big5toUnicodeBig5Unicode
UnicodetoGBUnicodeGB
UnicodetoBig5UnicodeBig5
SCtoTCUnicode²Åé¦rUnicodeÁcÅé¦r
TCtoSCUnicodeÁcÅé¦rUnicode²Åé¦r

¥t¤@­Ó±q¦øªA¾¹ºÝ¨Ó¶i¦æ¡uÁcÅéÂà²Åé¡vªº¸Ñ¨M¤è®×¡A«h¥i¥HÁ×¶}¬Û¹ï¸ô®|ªº­×§ï¡A¨ä¬yµ{¦p¤U¡G

  1. ¦b»Ý­nÂà²Å骺ºô­¶¾É¤J¡uÁcÂಡvªºµ{¦¡½XÀɮס]¦p¤U­zªº big5toGb.inc Àɮס^¡C
  2. ¥u­nºô§}±a¦³¡ulanguage=gb¡vªº°Ñ¼Æ¡A¤W­zµ{¦¡½X´N·|±Nºô­¶¤º®eÂର²Åé¡C
§Ú­Ì¥ý¨Ó¬Ý¤@­Ó½d¨Ò¡A°²³]­ì©lÁcÅéºô­¶¦p¤U¡G ­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]getWebPage/fullUrl01.asp¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<%@language=JScript%>
<% title="ÁcÂà²" %>
<!--#include file="../head.inc"-->
<hr>

³o¬O¤@´Êº}«Gªº¾ð¡I
<img align=top src="sbtree.gif">

<hr>
<!--#include file="../foot.inc"-->

Example¡]getWebPage/fullUrl01.asp¡^¡G

­Y­n±N¨ä§ï¦¨Â²Åéºô­¶¡A¥u»Ý¾É¤J big5toGb.inc ¨Ã¦bºô§}¥[¤J language=gb ªº¿ï¶µ¡A½d¨Ò¦p¤U¡G

Example¡]getWebPage/fullUrl02.asp?language=gb¡^¡G

¡]­Y¤W­z½d¨ÒµLªk¥¿½T§e²{¡A«hªí¥Ü¹ïÀ³¦øªA¾¹©|¥¼¦w¸Ë Hokoy.WordKit ¤¸¥ó¡C¡^¦¹½d¨Òªº­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]getWebPage/fullUrl02.asp¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<%@language=JScript%>
<!--#include file="big5toGb.inc"-->
<% title="ÁcÂà²" %>
<hr>

<!--#include file="../head.inc"-->
³o¬O¤@´Êº}«Gªº¾ð¡I
<img align=top src="sbtree.gif">

<hr>
<!--#include file="../foot.inc"-->

¦b¤W­z½d¨Ò¤¤¡A§Ú­Ì¤w¸g¦b­ìºô­¶¥[¤JÁcÅéÂà²Å骺µ{¦¡½X big5toGb.inc¡A¦¹®É¥u­n¦b­ìºô­¶ªººô§}¥[¤W¡u?language=gb¡v¡A¦¹®Éºô­¶ªº¤º®e´N·|³QÂন²Å餤¤å¡C¦¹¥~¡A¥Ñ©ó¨Ã¨S¦³¸ô®|Âà´«ªº°ÝÃD¡A¦]¦¹­ìºô­¶¨Ï¥Î¬Û¹ï¸ô®|¨ÓÅã¥Ü¾ðªº¼v¹³¡AÂà´««á¨Ã¨Ã¨S¦³¨ü¨ì¼vÅT¡C

¦b¤W­z½d¨Ò¤¤¡A©Ò¾É¤Jªº¡uÁcÂಡvµ{¦¡½XÀɮ׬° big5toGB.inc¡A¤º®e¦p¤U¡G

­ì©lÀÉ¡]getWebPage/big5toGb.inc¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<%
// ¨ú±o¦¹ºô­¶ªº http µ´¹ï¸ô®|
function getFullUrl(){
	var domainName=Request.ServerVariables("SERVER_NAME");
	var absPath=Request.ServerVariables("url");
	var queryString=Request.ServerVariables("query_string")+"";

	if (queryString=="")
		url="http://" + domainName + absPath;
	else
		url="http://" + domainName + absPath + "?" + queryString;
	return(url);
}

language=Request("language")+"";
//Response.Write("<script>alert('"+language+"')</script>");
if (language=="gb"){
	url=getFullUrl();
	url=url.replace(/language=gb&/g, "");	// §R°£ language=gb&
	url=url.replace(/language=gb/g, "");	// §R°£ language=gb
	// Step 1: ¨Ï¥Î WinHttp.WinHttpRequest ¤¸¥ó¨Ó§ì¨úºô­¶
	WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
	WinHttpReq.Open("GET", url, false);
	WinHttpReq.Send();			// Download the file
	content = WinHttpReq.ResponseBody;
	// Step 2: ¨Ï¥Î adodb.stream ¤¸¥ó¨Ó¶i¦æ¤å¥ó½s½X
	oStream = new ActiveXObject("adodb.stream");   
	oStream.Type=1;
	oStream.Mode=3;
	oStream.Open();
	oStream.Write(content);
	oStream.Position=0;   
	oStream.Type=2;
	oStream.Charset="Big5"   
	result= oStream.ReadText();   
	// Step 3: ¨Ï¥Î Hokoy.WordKit ¨ÓÂà´«¦¨Â²Åé
	wordToolObj = new ActiveXObject("Hokoy.WordKit");
	gbContent=wordToolObj.Big5toGB(result);
	// Step 4: §ïÅܺô­¶½s½X¨Ã±N¸ê®Æ§e²{©óºô­¶
	Response.Charset="gb2312";
	Response.Write(gbContent);
	Response.End();
}
%>

¦b¤W­zµ{¦¡½X¤¤¡A¨ä¤u§@¬yµ{¥i¥H»¡©ú¦p¤U¡G

  1. ­Yµoı¦³ language=gb ªº¿ï¶µ¡A«h§R°£¦¹¿ï¶µ¡AµM«á§ì¨úºô­¶¤º®e¡C
  2. ±Nºô­¶¤º®eÂন²Åé¡A¦¹¬yµ{©M«e¤@­Ó½d¨Ò¬O§¹¥þ¤@¼Ëªº¡C

JScript µ{¦¡³]­p»PÀ³¥Î¡G¥Î©ó¦øªA¾¹ºÝªº ASP Àô¹Ò