私はregexを使用してユニコードの文字列と一致させ、文字列に格納しています。例:c#.NETはロシア文字をレンダリングしません
注:次のコンテンツは、外部テキストファイルから読み込む必要があります。そうしないと、ビジュアルスタジオは自動的にロシア語にレンダリングします。しかし、
"\"Name\":\\s*\"(?<match>[^\"]+)\""
私は、文字列に一致するものを保存するときのように、文字列が保存されます:
"Name": "\u0412\u0438\u043d\u043d\u0438\u0446\u0430, \u0443\u043b. \u041a\u0438\u0435\u0432\u0441\u043a\u0430\u044f, 14-\u0431",
私は、パターンを使用しています.NETが保存されて
match = "\\u0412\\u0438\\u043d\\u043d\\u0438\\u0446\\u0430, \\u0443\\u043b. \\u041a\\u0438\\u0435\\u0432\\u0441\\u043a\\u0430\\u044f, 14-\\u0431"
文字列に余分な "\"が付いています
私は使ってみました:
match = match.replace(@"\\", @"\")
しかし、.NETは「ビジュアライザバージョン」を参照しているため、既存の@ "\\"を認識しません。
私はユニコードをC#で余分な '\'を付けずに保存できますか?
EDIT: もう一つのポイント:
// this works!
string russianCharacters = "\u041b\u044c\u0432\u043e\u0432, \u0414\u043e\u043b\u0438\u043d\u0430, \u0432\u0443\u043b. \u0427\u043e\u0440\u043d\u043e\u0432\u043e\u043b\u0430, 18");
これはロシア語の文字としてビジュアライザで正しくレンダリングされます。しかし、外部のテキストファイルからの正規表現の文字を格納するときには、それはexcapedシーケンスとして格納されます。
エスケープされたユニコードのシーケンスではなく、文字列をロシア語の文字としてレンダリングするにはどうすればよいですか?
うーん、ありません。 .NETはそのようなことはしません。おそらくあなたは混乱しています。なぜなら、これはデバッガが.NET文字列を表示する方法なのですから?代わりにプレーンテキストファイルに文字列を保存してみると、実際に*どのように見えるかがわかります( 'Encoding.Unicode'を使ってください)。'\\'は「ビジュアライザー」内にのみ存在します。そのため、それを置き換えることはできません。その逆もありません。 .NETは "ビジュアライザー"のバージョンを見ていない、あなたはそうです。 – Luaan
いいえ、**あなた**はビジュアライザーのバージョンを見ています。ダブルバックスラッシュはありません。また、このような文字列を格納することで何を達成しようとしていますか? – CodeCaster
HTMLDecodeは、HTMLEncodeを使用して以前にエンコードされた文字列で動作します。あなたの文字列はエンコードされていないので、.netがデコードする方法はありません。 https://msdn.microsoft.com/en-us/library/system.web.httputility.htmldecode(v=vs.110).aspx – Saleem