0

xml文字エンティティをC#文字に変換しようとしています...

string charString = "₁".Replace("&#", "\\").Replace(";", "");
char c = Convert.ToChar(charString);

Convert.Char行で失敗する理由がわかりません。デバッガーはcharStringを"\\\\x2081"実際の状態で表示しますが"\x2081"、これは有効なUnicode文字です。例外は文字数が多すぎることです。

4

2 に答える 2

5

のドキュメントToChar(string)は非常に読みやすいです。

指定された文字列の最初の文字をUnicode文字に変換します。

また:

FormatException –値の長さが1ではありません。

あなたのキャラクターの16進表現をそのキャラクターに変換することはありません。1文字の文字列を受け取り、その文字を返します。するのと同じs[0]です。

あなたが欲しいものは:

string hex = "₁".Replace("&#x", "").Replace(";", "");
char c = (char)Convert.ToInt32(hex, 16);
于 2012-11-19T07:24:36.183 に答える
0

Convert.ToChar(value)値は長さ1の文字列ですが、長さcharStringは1"\\x2081"を超えています"₁"。UnicodeHex文字コード(Unicode Hex文字コード₁)のようです。だからあなたはそれをしなければなりません:

string charString = "₁".Replace("&#x", "").Replace(";", "");
char c = (char)Convert.ToInt32(charString , NumberStyles.HexNumber);

注:これはのHTMLエンティティ(16進数)ですSUBSCRIPT ONE(上記のリンクを参照^ _ ^)

于 2012-11-19T08:06:28.720 に答える