从代码中获取 unicode 字符串 - C#

发布于 2024-07-23 11:23:33 字数 486 浏览 5 评论 0原文

我知道以下是在 C# 中使用 unicode 的方法

string unicodeString = "\u0D15";

在我的情况下,我不会在编译时获得字符代码 (0D15)。 我在运行时从 XML 文件中获取此信息。 我想知道如何将此代码转换为 unicode 字符串? 我尝试了以下

// 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; 

方法 我该如何处理这种情况?

任何帮助都会很棒!

I know following is the way to use unicode in C#

string unicodeString = "\u0D15";

In my situation, I will not get the character code (0D15) at compile time. I get this from a XML file at runtime. I wonder how do I convert this code to unicode string? I tried the following

// 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; 

How do I handle this situation?

Any help would be great!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

橙味迷妹 2024-07-30 11:23:34

这是一个 NUnit 测试,显示了 arul 和 Adrian 的解决方案 - 请注意,一个解决方案以字符串中的输入开始,而另一种解决方案的输入仅以字符开始。

    [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]);
    }

Here's an NUnit test showing arul and Adrian's solution - note that one solution starts with input in a string, while with the other solution the input starts in just a char.

    [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]);
    }
不即不离 2024-07-30 11:23:34

使用 字符引用转义 xml 中的字符:

<Config value="ക" />

它将得到由 C# 的 xml 解析器正确读取(至少 XElement.Load())。

Escape the character in the xml using a character reference:

<Config value="ക" />

It will get read properly by c#'s xml parser (at least XElement.Load()).

晒暮凉 2024-07-30 11:23:33

您想要使用 char.ConvertFromUtf32 函数。

string codePoint = "0D15";

int code = int.Parse(codePoint, System.Globalization.NumberStyles.HexNumber);
string unicodeString = char.ConvertFromUtf32(code);
// unicodeString = "ക"

You want to use the char.ConvertFromUtf32 function.

string codePoint = "0D15";

int code = int.Parse(codePoint, System.Globalization.NumberStyles.HexNumber);
string unicodeString = char.ConvertFromUtf32(code);
// unicodeString = "ക"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文