c语言urlencode
Ⅰ 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的区别,就在于关键词列表的不同。