来自Unicode的C#字符

时间:2015-01-25 21:30:50

标签: c# unicode

我有FontAwesome备忘单中的unicode字符:

#xf042;

如何将该字符放入c#?

string s =" ????&#34 ;;

我尝试输入它并使用。

2 个答案:

答案 0 :(得分:3)

假设十六进制输入表示UTF8编码的字符串,您可以使用一个函数来转换十六进制字符串:

public static string ConvertHexToString(string hex)
{
    int numberChars = hex.Length;
    byte[] bytes = new byte[numberChars / 2];
    for (int i = 0; i < numberChars; i += 2)
    {
        bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
    }
    return Encoding.UTF8.GetString(bytes);
}

然后在输入此功能之前从输入中过滤掉不必要的字符:

string input = "#xf042;";
string s = input.Replace("#x", string.Empty).Replace(";", string.Empty);
string result = ConvertHexToString(s);

显然你需要根据输入调整正确的编码,因为十六进制只是表示一个字节数组,为了将这个字节数组解码回一个字符串,你需要知道编码。 / p>

答案 1 :(得分:3)

如果您只想要Darin发布的更轻版本将十六进制值转换为包含FontAwesome字体私有区域中的unicode位置的字符串,则可以使用此&gt;&gt;

private static string UnicodeToChar( string hex ) {
    int code=int.Parse( hex, System.Globalization.NumberStyles.HexNumber );
    string unicodeString=char.ConvertFromUtf32( code );
    return unicodeString;
}

只需按以下方式调用&gt;&gt;

string s = UnicodeToChar( "f042" );

或者,您可以简单地使用C#类,其中包含预先写好的所有图标和加载程序&gt;&gt; FontAwesome For WinForms CSharp