2012-05-04 7 views
0

C#:私は、Webページのソースコードから来ている文字列を持っている:C#の:ローカル文字列のエスケープUnicodeで文字の正しいエンコーディング(すなわち:ない\ u20ac)

<script type="text/javascript"> 
var itemsLocalDeals = [{"category":"HEALTHCARE SERVICES", 
"dealPermaLink":"/deals/aachen/NLP-Deutschlandde 
5510969","dealPrice":"399,00 \u20ac",.......... 

を私はいくつかのことを行いますdealPriceを抽出してリスト<に追加します(文字列全体でdealPrice)。

"\ u20ac"をすべて実際の文字( "€")にデコードする方法はありますか? 他の文字もあるので、€-Characterだけでなく、デコードする必要があります。

私のコードをデバッグし、ローカルのフィールド/変数を見ると、文字列には "€" - 文字は含まれず、エスケープされたシーケンス "\\ u20ac"が含まれます。

myString.DecodeUnicodeToRealCharactersのようなものです。

私は(UTF-8)に結果を書いては

おかげでたくさんresult.txt!

PS:残念ながら、.NET 2.0のみ...

答えて

3

あなたはRegex.Unescape("\u20ac");

を使用しますが、より良いあなたの文字列が([{"category":"HEALTHCARE SERVICES",.....で始まる)JSON文字列のようですので、JSONパーサーを使用することができます

+0

おかげで、Regex.Unescapeは私のためだけで結構です。編集:私はHTMLアジリティパックを使用しています。 JSONパーサー? – think

+0

HtmlAgilityPackを使用して文字列を取得した後、[Json.Net](http://json.codeplex.com/)または[JavaScriptSerializer](http://msdn.microsoft.com/en-us/)のようなJsonパーサーを使用できます。ライブラリ/ system.web.script.serialization.javascriptserializer.aspx)。たとえば、http://stackoverflow.com/questions/10403037/parsing-json-object-containing-an-array-with-windows-phone-7/10403167#10403167 –

0

テキストを書くために使用しているコードを表示してもらえますか? この1つはうまく動作します:

string str = "\u20ac"; 
using (StreamWriter sw = new StreamWriter(@"C:\trythis.txt", false, Encoding.UTF8)){ 
    sw.Write(str); 
} 
+1

ありがとうございますが、それは役に立たなかった... – think

1
public string DecodeUnicodeToRealCharacters(string s) 
{ 
    return Encoding.Unicode.GetString(Encoding.Unicode.GetBytes(s)); 
} 
関連する問題