私はC#でユニコードを使用する方法を知っています
string unicodeString = "\u0D15";
私の状況では、コンパイル時に文字コード(D15)を取得しません。これは、実行時にXMLファイルから取得します。このコードをユニコード文字列に変換するにはどうすればよいですか?私は以下を試しました
// will not compile as unrecognized escape sequence
string unicodeString = "\u" + codeFromXML;
// will compile, but just concatenates u with the string got from XML file.
string unicodeString = "\\u" + codeFromXML;
この状況にどのように対処しますか?
どんな助けでも素晴らしいです!
char.ConvertFromUtf32 関数を使用します。
string codePoint = "0D15";
int code = int.Parse(codePoint, System.Globalization.NumberStyles.HexNumber);
string unicodeString = char.ConvertFromUtf32(code);
// unicodeString = "ക"
これは、arulとAdrianのソリューションを示すNUnitテストです。一方のソリューションは文字列の入力で始まり、もう一方のソリューションでは入力は文字のみで始まることに注意してください。
[Test]
public void testConvertFromUnicode()
{
char myValue = Char.Parse("\u0D15");
Assert.AreEqual(3349, myValue);
char unicodeChar = '\u0D15';
string unicodeString = Char.ConvertFromUtf32(unicodeChar);
Assert.AreEqual(1, unicodeString.Length);
char[] charsInString = unicodeString.ToCharArray();
Assert.AreEqual(1, charsInString.Count());
Assert.AreEqual((int) '\u0D15', charsInString[0]);
}
文字参照 を使用して、xml内の文字をエスケープします。
<Config value="ക" />
C#のxmlパーサー(少なくともXElement.Load())によって適切に読み取られます。