【发布时间】:2018-06-14 10:30:54
【问题描述】:
在我的应用程序中使用 unicode 时,我遇到了这种奇怪的情况。我有一个随机 unicode 列表,然后随机分配给一个对象。
var icons = new List<string> { "\uf022", "\uf039", "\uf02b", "\uf1b2", "\uf07b" };
当我调试对象时,Object.Icon 属性显示".",这是 unicode 的正确值。当我在 XAML 页面上显示 unicode 时,会显示正确的图标。
所以当我开始工作时,我想将 unicode 值移动到数据库中,而不是让它随机化。但是现在当我调试对象时,Object.Icon 属性显示“\\unicodevalue" 即“\uf022”。
在 XAML 页面上显示此值时,它显示为文本值 \uf022 而不是图标。
图标列表中的字符串与数据库中的字符串值有什么区别?
【问题讨论】:
-
您需要调试将这些值放入数据库并检索它们的代码,因为这就是问题所在。仅观察最终结果只会告诉您存在问题,而不是问题所在。
-
数据库中的值与随机图标列表中的值完全相同。此代码正在检索中。
-
那么您已经将范围缩小到检索事物的代码,我会说。需要明确的是:由单个字符
U+F022组成的字符串与字符串\uf022不是同一个字符串。您的数据库可以(可能)存储任何一种,但请确保您不会被无法准确显示内容的工具所迷惑。例如,如果使用 SQL Server,则使用DATALENGTH来获取以字节为单位的字符串大小,并使用CONVERT(VARBINARY(MAX), [column])之类的东西来查看代码点中的实际内容。 (另请注意,U+F022是未分配的私人使用字符,可以显示为任何字符。)
标签: c# unicode unicode-escapes