編寫JSP時,最麻煩的就是編碼的問題,而今天我就遇到了"明明所有的Page都設成UTF-8",但顯示出來仍然是亂碼!
研究了好多天,終於知道問題在那了!原來是Post/Get的差別,後來Google了一下,有位大大這麼寫到:
原文:
Get 和Post都是HTTP的标准协议动词,用于编码和传送变量名和变量值,无论Get 和Post都是通过编码后传送数据。
是这个问题解释起来有点难,但有两点是可以肯定的:
一是:get方式传送数据时附加参数被认为是一个查询字符串,变量名/变量值作为URL的一部分被传送,假如读取数据后,不立即跳转到别的页面上,地址栏上会看得到有关的参数和值,并与表单一一对应,如地址栏上会看到xx=??&xx=??。而post方式传送,虽然也是被URL编码的。然而,变量名/变量值不作为URL的一部分被传送,而是放在实际的HTTP请求消息内部被传送。从地址栏上看不到。
二是:get 默认(只是默认)是以使用MIME类型application/x-www-form-urlencoded的urlencoded文本的格式传递参数。Urlencoding是一种字符编码,保证被传送的参数由遵循规范的文本组成。post则可以通过页面指定的编码方式进行编码。目前大体有两类:一是ANSI的ASCII字符集,不同的国家和地区制定了不同的标准,由此产生了GB2312、BIG5, JIS等等,且互不兼容,并且与之后出现的国际性的UNICODE标准编码的UTF-8等也不兼容,因此稍有不慎便出现乱码。
繁體:
Get 和Post都是HTTP的標準協議動詞,用於編碼和傳送變量名和變量值,無論Get 和Post都是通過編碼後傳送數據。
是這個問題解釋起來有點難,但有兩點是可以肯定的:
一是:get方式傳送數據時附加參數被認為是一個查詢字符串,變量名/變量值作為URL的一部分被傳送,假如讀取數據後,不立即跳轉到別的頁面上,地址欄上會看得到有關的參數和值,並與表單一一對應,如地址欄上會看到xx=??&xx=??。 而post方式傳送,雖然也是被URL編碼的。 然而,變量名/變量值不作為URL的一部分被傳送,而是放在實際的HTTP請求消息內部被傳送。 從地址欄上看不到。
二是:get 默認(只是默認)是以使用MIME類型application/x-www-form-urlencoded的urlencoded文本的格式傳遞參數。 Urlencoding是一種字符編碼,保證被傳送的參數由遵循規範的文本組成。 post則可以通過頁面指定的編碼方式進行編碼。 目前大體有兩類:一是ANSI的ASCII字符集,不同的國家和地區製定了不同的標準,由此產生了GB2312、BIG5, JIS等等,且互不兼容,並且與之後出現的國際性的UNICODE標準編碼的UTF-8等也不兼容,因此稍有不慎便出現亂碼。
資料來源:http://wenwen.soso.com/z/q188275796.htm
2010年12月24日 星期五
2010年3月14日 星期日
2010年2月6日 星期六
無名相簿 下載程式
由於之前使用了WretchXD這個挺有名的"無名相簿下載程式",我只能說太強了,所以也想說自己寫一個小的玩一玩,在撰寫的過程中,所遇到的因難可真不少,畢竟自己程度不好,而我是以C#所開發的(.NET 2.0),功能目前也挺簡單的,但都有達到最基本的要求-"下載",若寫的不好,在此還請各位大大多多包含,若有什麼要改進的,可以留言,謝謝!
WretchAlbumDownload v1.1
目前已發現的問題如下:
1.相簿名稱複選時,圖片無法正確顯示->Modified 2010/02/23
2.在相簿還為載入完全時,點選相簿名稱時會當掉->Modified 2010/02/23
3.訊息文字排列有問題
------------------------
WretchAlbumDownload v1.0
參考資料:
CCN's Soft
目前已發現的問題如下:
1.相簿名稱複選時,圖片無法正確顯示->Modified 2010/02/23
2.在相簿還為載入完全時,點選相簿名稱時會當掉->Modified 2010/02/23
3.訊息文字排列有問題
------------------------
WretchAlbumDownload v1.0
參考資料:
CCN's Soft
如何印出當前程式的路徑 For C#
由於近日因撰寫程式的需要,所以上網找了一下方法,發現似乎挺簡單的:
就這樣而已!
MessageBox.Show(System.Windows.Forms.Application.StartupPath);
就這樣而已!
2010年2月4日 星期四
撰寫C#應用程式時,要如何叫出資料夾選擇視窗
其實方法並不難,只是VS沒有將它放在工具欄而已,所以要手動自己寫:
FolderBrowserDialog FBD=new FolderBrowserDialog();
FBD.ShowDialog();
如此就可以選擇不同的Path進行存檔.
2009年8月2日 星期日
JSP實作MD5
有用過PHP的人都知道,如果要做Hash的話,本身就有Function可以執行,很方便,但在JSP中卻沒有,需要手動來處理:
資料來源:
http://snook.ca/archives/java/create_md5_hash/
http://blog.xuite.net/jameschih/java/5089658
<%@page contentType="text/html" pageEncoding="UTF-8" import="java.security.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
String plainText = "123456";
MessageDigest mdAlgorithm = MessageDigest.getInstance("MD5");
mdAlgorithm.update(plainText.getBytes());
byte[] digest = mdAlgorithm.digest();
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
plainText = Integer.toHexString(0xFF & digest[i]);
if (plainText.length() < 2) {
plainText = "0" + plainText;
}
hexString.append(plainText);
}
out.print(hexString.toString());
%>
</body>
</html>
資料來源:
http://snook.ca/archives/java/create_md5_hash/
http://blog.xuite.net/jameschih/java/5089658
2009年7月15日 星期三
JSP+MultiPartRequest實作FileUpload
JSP要實作檔案上傳的方法很多,例如:jspSmart/O'Reilly/Jakarta等等,不過小弟找不到jspSmart的官網,在此以O'Reilly所提供的API為例:
1.先到http://www.servlets.com/cos/index.html下載套件(cos-26Dec2008.zip)
2.將ZIP檔unzip,然後將lib資料夾全都COPY到Web應用程式的WEB-INF下
3.先撰寫一個fileUpload.jsp:
注意:<form>中一定要加enctype="multipart/form-data"
4.再選寫一個implementUpLoad.jsp:
資料來源:http://caterpillar.onlyfun.net/Gossip/JSPServlet/FileUpload.htm
1.先到http://www.servlets.com/cos/index.html下載套件(cos-26Dec2008.zip)
2.將ZIP檔unzip,然後將lib資料夾全都COPY到Web應用程式的WEB-INF下
3.先撰寫一個fileUpload.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<form action="implementUpLoad.jsp" method="POST" enctype="multipart/form-data">
<input type="file" name="files" value="" width="20" />
<input type="hidden" name="fileupload" value="go" /><br>
<input type="submit" value="Upload" />
</form>
</body>
</html>
注意:<form>中一定要加enctype="multipart/form-data"
4.再選寫一個implementUpLoad.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8" import="com.oreilly.servlet.MultipartRequest" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%
try {
String saveDirectory = "C:\\htdocs\\JSP\\jsp\\web\\files\\";
int maxPostSize = 5 * 1024 * 1024;
MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize, "UTF-8");
//MultipartRequest m=new MutipartRequest();
out.println(multi.getFileNames().nextElement());
out.println(multi.getFilesystemName((String)multi.getFileNames().nextElement()));
} catch (Exception e) {
out.println(e.getMessage());
}
%>
</body>
</html>
資料來源:http://caterpillar.onlyfun.net/Gossip/JSPServlet/FileUpload.htm
訂閱:
文章 (Atom)



