當前位置:首頁 » 編程語言 » c語言urlencode

c語言urlencode

發布時間: 2023-02-06 01:23:38

Ⅰ ubuntu怎麼得到urlencode編碼

java、.net 和 JS 中都有相應的 encodeURL 方法可用,在 Objective-C 語言中,你可以試下
- (NSString *):(NSStringEncoding)enc;
來對完整的 URL(帶請求參數的)進行編碼,比如執行下面的代碼:
NSString *url=@"http://unmi.cc?p1=%+&sd &p2=中文";
NSString *encodedValue = [url :NSUTF8StringEncoding];

上面代碼轉換出的 encodedValue 是:
http://unmi.cc?p1=%25+&sd%20&p2=%E4%B8%AD%E6%96%87
可見,它不會轉換 URL 中的 ?%& 符號,這也正常,因為它肯定分不出哪個 & 是參數的連接符號還是參數值,你可以單獨編碼參數,然後在拼接成 URL 之前把屬性參數值中的 ?%& 等符號分別替換成相應的編碼。
或者,您還可以試下另外一個方法來單獨編碼參數值,然後拼接成完整的 URL:
/* newString = (kCFAllocatorDefault, origString, NULL, NULL, kCFStringEncodingUTF8); */
CF_EXPORT
CFStringRef (CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding);
本文原始鏈接:http://unmi.cc/objective-c-urlencode, 來自:隔葉黃鶯 Unmi Blog
參考代碼,分別編碼前面的 p1=%+&sd f&p2=中文,兩個參數的代碼和結果如下:
NSString *param = @"%+&sd f";
NSString *encodedValue = (NSString*)(nil,
(CFStringRef)param, nil,
(CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8);

這樣編碼出來的 encodedValue 為 %25%2B%26sd%20f,對 ?%& 等符號也會編碼的。用上面的代碼對 「中文」 進行編碼的結果是:%E4%B8%AD%E6%96%87,與前面是一致的。
我實際應用時還是這個 方法比較方便。
我們在項目中是使用的 ASIHTTPRequest 組件來訪問 URL 的,在使用 ASIFormDataRequest 時發出它其中有一個方法:
- (NSString*)encodeURL:(NSString *)string
{
NSString *newString = NSMakeCollectable([(NSString *)(
kCFAllocatorDefault,
(CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"),
([self stringEncoding])) autorelease]);
if (newString) {
return newString;
}
return @"";
}

看起來它就是個 Objective-C 版的 encodeURL 方法,可是它聲明成了一個實例方法,必須構造出 ASIFormDataRequest 實例才能使用它,在它的父類 ASIHTTPRequest 中都無該方法。現在來試驗一下這個方法的返回值:
ASIFormDataRequest *formDataRequest = [ASIFormDataRequest requestWithURL:nil];
NSString *encodedValue1 = [formDataRequest encodeURL:@"%+&sd f"];
NSString *encodedValue2 = [formDataRequest encodeURL:@"中文"];

得出的 encodedValue1 和 encodedValue2 分別是 %25%2B%26sd%20f 和 %E4%B8%AD%E6%96%87,和前面是一致的,所以你可以用 ASIFormDataRequest 提供的方式來進行 URLEncode,把這個方法提出為一個工具方法即可。

Ⅱ C#語言做的電子相冊系統

首先需要在同級目錄下建立文件夾FileSystem

//後台代碼:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebShop
{
/// <summary>
/// filesystem 的摘要說明。
/// </summary>
public class filesystem : System.Web.UI.Page
{
protected System.Web.UI.WebControls.LinkButton LinkButton1;
protected System.Web.UI.WebControls.DataList DataList1;
protected System.Web.UI.WebControls.Button Button3;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.HtmlControls.HtmlInputFile fileFeild1;

private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
Bind();
}
}

private void Bind()
{
string initpath="";
if(Request["path"]==null)
{
initpath=Server.MapPath("FileSystem");
}
else
{
initpath=Request["path"];
}
this.Label1.Text=initpath;

DataTable dt=new DataTable();
DataColumn dc0=new DataColumn("Image",System.Type.GetType("System.String"));
dt.Columns.Add(dc0);
DataColumn dc1=new DataColumn("Name",System.Type.GetType("System.String"));
dt.Columns.Add(dc1);

DirectoryInfo di=new DirectoryInfo(this.Label1.Text);
DirectoryInfo[] dis=di.GetDirectories();
foreach(DirectoryInfo d in dis)
{
DataRow dr=dt.NewRow();
dr[0]="<a href='filesystem.aspx?path="+HttpUtility.UrlEncode(d.FullName,System.Text.Encoding.UTF8)+"'><img src='images/folder.gif' border=0/></a>";
dr[1]=d.Name;
dt.Rows.Add(dr);
}

FileInfo[] fis=di.GetFiles();
foreach(FileInfo f in fis)
{
string ex=f.Extension.ToLower();
if(ex==".jpg" || ex==".jpeg" || ex==".gif" || ex==".png" || ex==".bmp")
{
string fullname=f.FullName;
string urlpath=fullname.Substring(fullname.IndexOf("FileSystem"));
string url=HttpUtility.UrlEncode(urlpath,System.Text.Encoding.UTF8);
DataRow dr=dt.NewRow();
dr[0]="<a href='"+url+"' target='_blank'><img src='"+url+"' border=0 width=100 height=128/></a>";
dr[1]=f.Name;
dt.Rows.Add(dr);
}
}

this.DataList1.DataSource=dt;
this.DataList1.DataBind();
}

#region Web 窗體設計器生成的代碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
/// </summary>
private void InitializeComponent()
{
this.LinkButton1.Click += new System.EventHandler(this.LinkButton1_Click);
this.Button3.Click += new System.EventHandler(this.Button3_Click);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void LinkButton1_Click(object sender, System.EventArgs e)
{
string Parent=Directory.GetParent(this.Label1.Text).ToString();
if(Parent.IndexOf("FileSystem")>-1)
{
Response.Redirect("filesystem.aspx?path="+Parent);
}
else
{
return;
}
}

private void Button1_Click(object sender, System.EventArgs e)
{
HttpPostedFile hpf=this.fileFeild1.PostedFile;
string ClientPath=hpf.FileName;
string filename=Path.GetFileName(ClientPath);
string ex=Path.GetExtension(filename);
if(ex==".jpg" || ex==".jpeg" || ex==".gif" || ex==".png" || ex==".bmp")
{
string SavePath=this.Label1.Text+"\\"+filename;
hpf.SaveAs(SavePath);
Bind();
}
else
{
Response.Write(Tools.GetAlertJS("所上傳的圖片格式不正確!"));
return;
}
}

private void Button2_Click(object sender, System.EventArgs e)
{
string filename=this.TextBox1.Text;
Directory.CreateDirectory(this.Label1.Text+"\\"+filename);
Bind();
}

private void Button3_Click(object sender, System.EventArgs e)
{
for(int i=0;i<this.DataList1.Items.Count;i++)
{
if(((CheckBox)this.DataList1.Items[i].FindControl("CheckBox1")).Checked)
{
int index=this.DataList1.Items[i].ItemIndex;
string filePath=this.Label1.Text+"\\"+this.DataList1.DataKeys[index].ToString();
if(Directory.Exists(filePath))
{
Directory.Delete(filePath,true);
}
if(File.Exists(filePath))
{
File.Delete(filePath);
}
Bind();
}
}
}
}
}

前台頁面:
<%@ Page language="c#" Codebehind="filesystem.aspx.cs" AutoEventWireup="false" Inherits="WebShop.filesystem" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>filesystem</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<LINK href="CssStyle.css" type="text/css" rel="stylesheet">
<form id="Form1" method="post" runat="server">
</HEAD>
<body MS_POSITIONING="GridLayout">
<FONT face="宋體">
<table cellSpacing="1" cellPadding="0" width="777" align="center" bgColor="#336600" border="0">
<tr>
<td bgColor="#08498c" colSpan="3"><IMG src="images/FileSystemBaner.gif"></td>
</tr>
<tr>
<td width="170" bgColor="#e3e3e3" rowSpan="2">
<asp:linkbutton id="LinkButton1" runat="server">後退</asp:linkbutton></td>
<td width="604" bgColor="#efefef" colSpan="2">
<asp:datalist id="DataList1" runat="server" RepeatColumns="4" RepeatDirection="Horizontal" DataKeyField="Name"
Width="604">
<ItemTemplate>
<table width="150" align="center">
<tr>
<td align="center" width="10"></td>
<td align="left" width="140"><%#DataBinder.Eval(Container.DataItem,"Image")%>
</td>
</tr>
<tr>
<td width="10" align="right">
<asp:CheckBox ID="checkBox1" Runat="server" /></td>
<td width="140" align="left"><font face="宋體"><%#DataBinder.Eval(Container.DataItem,"Name")%></font></td>
</tr>
</table>
</ItemTemplate>
</asp:datalist></td>
</tr>
<tr>
<td align="right" bgColor="#efefef" colSpan="2"><asp:button id="Button3" runat="server" Text="刪除選中項"></asp:button>
<input id="fileFeild1" type="file" name="fileFeild1" runat="server">
<asp:button id="Button1" runat="server" Text="確定上傳"></asp:button><br>
<asp:textbox id="TextBox1" runat="server"></asp:textbox>
<asp:button id="Button2" runat="server" Text="創建目錄"></asp:button></td>
</tr>
<tr>
<td bgColor="#888888" colSpan="3"><span class="STYLE1"><asp:label id="Label2" runat="server" ForeColor="White"> 當前所在位置:</asp:label><SPAN class="STYLE1"><asp:label id="Label1" runat="server" ForeColor="White" Width="87px"></asp:label></SPAN></span></td>
</tr>
</table>
</FONT></FORM>
</body>
</HTML>

Ⅲ switch case語句是什麼意思

switch case語句是什麼意思 switch case語句是判斷語句。
switch的用法是判斷case後面的表示式和switch後面的表示式是否相匹配,一旦case匹配,就會順序執行後面的程式程式碼,而不管後面的case是否匹配,直到遇見break。
switch語句中case是什麼意思?
case後面接的是一個分支的情況 ,針對switch
後面的資訊,來分類處理,例如 switch (變數1)
case 1 : 那麼這里寫當變數值為1 的處理邏輯,可以是表示式,也可以是一系列表示式。
vb中Select Case SSTab1.Tab語句是什麼意思
Select Case SSTab1.TabCase 0MsgBox "你選擇了選項卡0"Case 1MsgBox "你選擇了選項卡1"Case 2MsgBox "你選擇了選項卡2"End SelectEnd Sub
c語言中開關語句switch中case是什麼意思?
可能之一 吧,分支 之一
switch(表示式)
{
case 常量表達式1:
語句1;
break;

case 常量表達式2:
語句2;
break;
……
case 常量表達式n:
語句n;
break;
default:
語句n+1;
break;
}

JAVA里switch…case是什麼意思
switch…case是節點盅的意思
package .ldc.test;
import java.util.Scanner;
/**
*
* @author 願做無聊聽眾6
*
*/
public class Test {
public static void main(String[] args) {
System.out.println("請輸入1、2、3:");
Scanner scan = new Scanner(System.in);
int go = scan.nextInt();
switch (go) { ------------------------------------在這個節點下的程式碼,如果沒有用break
,2、3、default的程式碼也會執行
case 1:
System.out.println("這是第一個節點");
break; -----------------------------------------跳出當前,不再往下執行
case 2:
System.out.println("這是第二個節點");
break;
case 3:
System.out.println("這是第三個節點");
break;
default:
System.out.println("節點未定義");
break;
}
}
}
空define語句是什麼意思
#define是巨集定義的意思
2. 巨集定義是用巨集名來表示一個字串,在巨集展開時又以該字串取代巨集名,這只是一種簡單的代換,字串中可以含任何字元,可以是常數,也可以是表示式,預處理程式對它不作任何檢查。如有錯誤,只能在編譯已被巨集展開後的源程式時發現。
3.巨集定義不是說明或語句,在行末不必加分號,如加上分號則連分號也一起置換。
4.巨集定義其作用域為巨集定義命令起到源程式結束。如要終止其作用域可使用#undef命令。
printf這語句是什麼意思
函式名稱: printf
函式原型: int printf(char * format,args,...);
函式功能: 按format指向的格式字串所規定的格式,將輸出表列args的值輸出到標准輸出裝置
函式返回: 輸出字元的個數.若出錯返回負數
引數說明: format-是一個字串,或字元陣列的起始地址
所屬檔案: <stdio.h>
#include <stdio.h>

int main()
{
char c='a';
int i=97;
printf("%c,%d\n",c,c);
printf("%c,%d\n",i,i);
return 0;
}
ClientToScreen(&point);語句是什麼意思?
將客戶端座標轉換成頻幕顯示器的座標吧。。 與ScreenToClient()相反。
Java 語句里的switch(number%10) 是什麼意思?
switch是條件語句,意思就是number%10的值滿足某個條件,就執行接下來的程式碼
switch(a){ case 1: 當a==1 System.out.println("a等於1"); break; case 2: 當a==2 System.out.println("a等於2"); break; default: 預設情況 System.out.println("a不等於1,也不等於2");}

這句php語句是什麼意思?
::是訪問靜態成員的方法
Url::tag(urlencode($viewtag))這句的意思是
取得Url類的靜態方法tag當引數是urlencode($viewtag)時的返回值

Ⅳ encode 在C++中的用法

C++中encode的用法:
說明:encode是用來對url中特殊字元進行編碼的。
入參:需要進行編碼的字元bytes_to_encode ,字元的長度in_len。
std::string encode(unsigned char const* bytes_to_encode, unsigned int in_len) {
std::string ret;
int i = 0;
int j = 0;
unsigned char char_array_3[3];
unsigned char char_array_4[4];
//依次循環處理byte位數,並做移位運算。
while (in_len--) {
char_array_3[i++] = *(bytes_to_encode++);
if (i == 3) {
char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
char_array_4[3] = char_array_3[2] & 0x3f;

for(i = 0; (i <4) ; i++)
ret += base64_chars[char_array_4[i]];
i = 0;
}
}

if (i)
{
for(j = i; j < 3; j++)
char_array_3[j] = '\0';

char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
char_array_4[3] = char_array_3[2] & 0x3f;

for (j = 0; (j < i + 1); j++)
ret += base64_chars[char_array_4[j]];

while((i++ < 3))
ret += '=';

}
//返回結果
return ret;
}

Ⅳ 求解,htmlencode和urlencode的區別,適用場合

任何語言,都有自己的保留關鍵詞,比如在sql語句中,你不能將自己表取名為select;在csharp中,你不能將對象取名為class……
而html和url,本質上也是表義的語言,也有自己的關鍵詞。當需要在語言之外使用這些關鍵詞的時候,就需要轉義。
所以,htmlencode和urlencode的區別,就在於關鍵詞列表的不同。

熱點內容
jrtplib編譯 發布:2024-11-01 18:06:01 瀏覽:226
java代碼中if 發布:2024-11-01 18:02:40 瀏覽:377
android定時刷新 發布:2024-11-01 17:59:43 瀏覽:999
炎黃解說我的世界伺服器生存 發布:2024-11-01 17:59:42 瀏覽:542
如何清楚網頁緩存 發布:2024-11-01 17:53:58 瀏覽:552
linux文件許可權不夠 發布:2024-11-01 17:53:19 瀏覽:917
c語言中10是什麼意思 發布:2024-11-01 17:45:08 瀏覽:892
裝棉衣壓縮袋 發布:2024-11-01 17:37:18 瀏覽:297
android40ble藍牙 發布:2024-11-01 17:36:58 瀏覽:712
資料庫表對比 發布:2024-11-01 17:18:42 瀏覽:985