문제

다음은 C#에서 유니 코드를 사용하는 방법이라는 것을 알고 있습니다.

string unicodeString = "\u0D15";

내 상황에서는 문자 코드를 얻지 못할 것입니다 (0D15) 컴파일 시간에. 런타임에 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]);
    }

a를 사용하여 XML의 문자를 탈출하십시오 성격 참조:

<Config value="&#x0D15;" />

C#의 XML Parser (적어도 xelement.load ())에 의해 제대로 읽습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top