URL Encoding/Decoding

问题一:

WebClient   wc   =   new   WebClient();    
                  wc.Credentials   =   CredentialCache.DefaultCredentials;    
                  Byte[]   pageData   =   wc.DownloadData(@url);    
  当   url   包含中文字符的时候   就出现乱码问题?怎么解决?  
  编码    
  Response.ContentEncoding   =   System.Text.Encoding.GetEncoding("GB2312");    
  或者   utf-8    
  都不能解决问题~~~~~~~    
  url不包含中文的时候     是正常的    
  比如   url="search.aspx?search_str=aa"    
  正常    
  但是   url="search.aspx?search_str=中国"    
  就不正常了  
  WebRequest   也出同样的问题

 

 

答案:

 来自:http://renyu732.cnblogs.com/archive/2005/06/09/171175.html

 

论坛中经常会看到有人问,在URL传递中文时会出现传递不全的情况,解决方案如下:
修改web.config文件中的utf-8改为gb2312
然后传递的时候这样写:
url="description.aspx?name="+Server.UrlEncode(myname.text)
response.redirect(url)

接收的时候:
name=Server.UrlDecode(Request.QueryString("name"))

//按照UTF-8进行编码
string tempSearchString1 = System.Web.HttpUtility.UrlEncode("C#中国");
//按照GB2312进行编码
string tempSearchString2 = System.Web.HttpUtility.UrlEncode("C#中国",System.Text.Encoding.GetEncoding("GB2312"));


另外给二个说明及案例地址:
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemwebhttpserverutilityclassurlencodetopic1.asp

http://dotnet.aspx.cc/ShowDetail.aspx?id=YUEMA9OS-W1DN-4KIS-8RIE-S742LLJ91L6Q

 

 

 

 

问题二:  在c# winform 模式下,我想使用HttpUtility.UrlEncode,如何引用 System.web?

 

我在c#   winform   模式下   输入   using   System.Web,  
  编译时提示   “E:/c#/cie1/Form1.cs(11):   类型或命名空间名称“Web”在类或命名空间“System”中不存在(是否缺少程序集引用?)”  
  请问应该如何引用   System.Web才能使用HttpUtility.UrlEncode?

答:

在项目管理器的列表中有引用,点右键,"添加引用",选择System.Web.dll。(就是system.web)

 

 

 

 

问题三:下边是实际使用的例子。 我搜索http://www.baidu.com也可以。

问题:WebClient的发的uri的中文问题?
WebClient web_client = new WebClient();

Byte[] page_in_bytes=web_client.DownloadData("http://198.198.8.9/1.jsp?name='年岁对方'");

//这是会提示出错,当改成
string page="http://198.198.8.9/1.jsp?name='年岁对方'";
Byte[] gb =System.Text.Encoding.Unicode.GetBytes(page);
page=Encoding.Unicode.GetString(gb);
Byte[] page_in_bytes = web_client.DownloadData(page);

//就可以成功提交,但1.jsp接收到的name是乱码,转成GB2312或ISO等都没办法正确显示。各位有没有碰到这个问题
 
 
答:
Byte[] page_in_bytes=web_client.DownloadData("http://198.198.8.9/1.jsp?name='" + System.Web.HttpUtility.UrlEncode("年岁对方", System.Text.Encoding.GetEncoding("GB2312")) +"'");
 
 
 
 
问题四:
使用c#的流来读html代码   中文乱码如何解决呢  
  我已经在html页面中加入了meta标签分别采用了utf-8和GB2312都不管用,  
  从html页面读出来的中文都是"????????"  
  请教高手?
 
答:
 StreamReader   reader   =   new   StreamReader(YourStream,   System.Text.Encoding.GetEncoding("GB2312"));  
  string   s   =   reader.ReadToEnd();  
  reader.Close();  
 
 
StreamReader默认是UTF-8读取文件,如果文件中有中文,则可以指定后面编码格式为GB2312,或者对应的需要的格式..  
   
  StreamReader   reader   =   new   StreamReader(YourStream,   System.Text.Encoding.GetEncoding("GB2312"));  
  string   s   =   reader.ReadToEnd();
 
 
 
有位仁兄也发现了这个问题:

 
package main import ( "bytes" "encoding/json" "fmt" "net/http" "github.com/gin-gonic/gin" ) type AlertData struct { Receiver string `json:"receiver"` Status string `json:"status"` Alerts []Alert `json:"alerts"` GroupLabels map[string]string `json:"groupLabels"` CommonLabels map[string]string `json:"commonLabels"` CommonAnnotations map[string]string `json:"commonAnnotations"` ExternalURL string `json:"externalURL"` } type Alert struct { Status string `json:"status"` Labels map[string]string `json:"labels"` Annotations map[string]string `json:"annotations"` } func main() { router := gin.Default() router.POST("/webhook", handleWebhook) router.Run(":8080") } func handleWebhook(c *gin.Context) { var alertData AlertData err := c.BindJSON(&alertData) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Error decoding JSON"}) return } // Process the received alert data for _, alert := range alertData.Alerts { // Extract information from alert alertName := alert.Labels["alertname"] instance := alert.Labels["instance"] severity := alert.CommonLabels["severity"] description := alert.Annotations["description"] summary := alert.Annotations["summary"] // Compose the message to be sent to Enterprise WeChat group using Markdown format message := fmt.Sprintf(`**Alert Name:** %s **Instance:** %s **Severity:** %s **Description:** %s **Summary:** %s`, alertName, instance, severity, description, summary) // Send the message to Enterprise WeChat group using the WeChat bot API sendToEnterpriseWeChatGroup(message) } c.JSON(http.StatusOK, gin.H{"message": "Alerts processed successfully"}) } func sendToEnterpriseWeChatGroup(message string) { // Replace 'YOUR_WECHAT_BOT_URL' with the actual URL of your Enterprise WeChat bot wechatBotURL := "YOUR_WECHAT_BOT_URL" data := map[string]interface{}{ "msgtype": "markdown", "markdown": map[string]string{ "content": message, }, } jsonData, _ := json.Marshal(data) _, err := http.Post(wechatBotURL, "application/json", bytes.NewReader(jsonData)) if err != nil { fmt.Println("Error sending message to Enterprise WeChat group:", err) } } 将以上代码拆分成多个模块
07-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值