在我的应用程序中使用unicodes时,我遇到了这种奇怪的现象。我有一个随机unicodes列表,然后我随机分配给一个对象。
var icons = new List<string> { "\uf022", "\uf039", "\uf02b", "\uf1b2", "\uf07b" };
当我调试对象时,Object.Icon
属性显示"."
,这是unicode的正确值。当我在XAML页面上显示unicodes时,会显示正确的图标。
因此,当我开始工作时,我想将unicode值移动到数据库中,而不是让它随机。但是现在当我调试对象时,Object.Icon
属性显示&#34; \\unicodevalue"
,即&#34; \ uf022&#34;。
在XAML页面上显示此值时,它将显示为文本值\ uf022而不是图标。
图标列表中的字符串与数据库中的字符串值有什么区别?
答案 0 :(得分:1)
数据库中的unicode序列有反斜杠转义,所以"\\uf042"
实际上是6个字符:反斜杠,&#34; u&#34;,&#34; f&#34;,&#34 ; 0&#34;,&#34; 4&#34;和&#34; 2&#34;。
然而,就C#而言,代码中的unicode序列实际上只是一个字符,它们是unicode代码点的文字。
要从数据库中的值更改为单个unicode代码点,请尝试使用Char.ConvertFromUtf32
方法。