2012-09-10 28 views
0

我在做什麼改變HTML代碼的JavaScript逃逸是:WCF JSON退換貨服務應該返回單轉義序列

string input = "श्रीगंग..." 

var output = Regex.Replace(input, @"&#([0-9]*);", 
       x => String.Format("\\u{0:X4}", int.Parse(x.Groups[1].Value))); 
or alternately; 

var output = String.Join("", WebUtility.HtmlDecode(input) 
        .Select(x => "\\u" + ((int)x).ToString("X4"))); 

但現在我有一個問題,當我在JSON通過WCF服務發送該數據格式。我正在相應地獲取價值。 但只能輸出變量是怎麼了?這是這種格式:

\\ u0026 \\ u0023 \\ u0032 \\ u0033 \\ u0033 \\ u0037 \\ \\ u003B \\ u0026 \\ u0023 u0032 \ \ u0033 \\ u0037 \\ u0035 \\ u003B \\ u0026 \\ u0023 \\ u0032 \\ u0033 \\ u0033 \\ u0038 \\ u003B \\ u0026 \\ u0023 \\ u0032 \\ u0033 \\ u0036 \\ u0034 \\ 00 B \ \ \ \ \ \ \ \ \ i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i想要'\\'0026'但是隻想要''''作爲迴應。 我已經試過各種方法,如:

output.Replace("\\","'\'"); 
output.Replace("\\",@"\"); 

但這裏didn.t工作。

這裏是我的WCF服務方法:

[OperationContract(Name = "GetByCity")] 
     [WebInvoke(Method = "GET", UriTemplate = "/GetByCity/DeviceType={DeviceType}&CityId={id}&Limit={limit}", BodyStyle = WebMessageBodyStyle.WrappedRequest, 
        RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
     NewsList GetByCity(string DeviceType, string id, string limit); 

現在我不知道在哪裏定義UTF-8格式。

回答

0

Unicode escpace序列\u....用於C#源代碼,它用於JSON格式的數據,但它不用於C#字符串。 C#字符串完全支持Unicode,並且可以直接表示所有Unicode字符。

如果在傳輸的JSON數據中需要,WCF服務將自動創建轉義序列。但是,如果字符串已經包含這些轉義序列,那麼WCF服務將添加更多的轉義,以便在解析JSON數據後保留不必要的轉義序列。

因此,爲了解決您的問題,您需要與真實Unicode字符,即श需要與具有Unicode代碼點2358的字符替換,替換的HTML實體(&#....;):

var output = Regex.Replace(input, @"&#([0-9]*);", 
      x => new String((char) int.Parse(x.Groups[1].Value), 1)); 
+0

::你的答案是完全正確的,我得到我的解決方案,但RI8現在我想這些HTML代碼「श ् र ी ग ं ग ...」 轉換爲某種UTF-8格式的字符串是這樣的:「\ u0928 \ u0908 \ u0926 \ u093f \ u0932 \ u094d ‍ \ u0932 \ u0940 \/\ u092e \ u0941 \ u0902 \ u092c \ u0908。「 ,因爲我想將其用於移動設備。它只支持utf-8格式。 –

+0

如果需要,WCF服務將自動生成它們。但是對於UTF-8,它們不是必需的,因爲UTF-8能夠直接表示Unicode字符。由於您的移動設備瞭解UTF-8,我沒有看到沒有理由使用Unicode轉義序列。 (如果您使用ASCII或ISO-8859-1編碼,您將需要它們。) – Codo

+0

但是,當我以json格式將值發送到設備時,它不會呈現,我不知道爲什麼會發生這種情況? 我的意思是它沒有顯示正確的格式,它顯示不同的語言dnt知道什麼? –