2012-09-04 12 views
0

我有一個創建一些HTML作爲一個字符串,並上載字符串作爲文件亞馬遜的web應用程序在Amazon S3上的文件時得到損壞S3。使用漢字使用client.PutObject和request.ContentBody創建與AWS的.Net SDK

檢查調試器中的字符串之前,我看到的HTML看起來很好,但是當我檢查該文件中的鬥我看到一些角色已經改變了文件上傳。它只發生在某些字符上。例如:

這是GO時間在Android™!

成爲

伊達€™的GO時間在Android上「¢!

這是確切的代碼使用:

using (var client = AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey, s3Config)) 
     { 
      var request = new PutObjectRequest() 
       .WithBucketName(bucketName) 
       .WithKey(fileKey) 
       .WithMetaData("title", title); 
      request.ContentBody = body; 
      S3Response response = client.PutObject(request); 
      response.Dispose(); 
     } 

我試圖.WithContentBody(體),但它改變爲request.ContentBody =主體;看看這會神奇地工作,但顯然它沒有。

body變量是HTML字符串。當我在調試器中查看它時,字符看起來應該是這樣。另外,當我使用Visual Studio HTML查看器的正文值時,它看起來很好。

任何想法,我可能做錯了什麼?我錯過了一些設置?似乎無法在我的網頁搜索中找到任何其他身體問題。

回答

0

終於想出了這一個。沒有更快發現它,因爲我在調試器中的HTML字符串在瀏覽器中呈現OK,但它應該是顯而易見的。

我有運送他們之前特殊字符進行編碼。我無法使用標準的HttpUtility來編碼整個HTML字符串,因爲所有的HTML標籤都會被編碼。

我用這個方法:

private static string HtmlEncodeSpecialChars(string html) 
    { 
     var sb = new StringBuilder(); 
     foreach (var c in html) 
     { 
      if (c > 127) // special chars 
       sb.Append(String.Format("&#{0};", (int)c)); 
      else 
       sb.Append(c); 
     } 
     return sb.ToString(); 
    } 

我所看見的here

似乎至今在做的伎倆。

相關問題