【发布时间】:2011-03-09 19:31:18
【问题描述】:
我知道您可以将 Unicode 字符代码放入 VB.Net 字符串中,如下所示:
str = Chr(&H0030) & "More text"
我想知道如何将字符代码直接放入字符串文字中,以便我可以从设计器视图中使用 Unicode 符号。
这可能吗?
【问题讨论】:
标签: vb.net string unicode designer
我知道您可以将 Unicode 字符代码放入 VB.Net 字符串中,如下所示:
str = Chr(&H0030) & "More text"
我想知道如何将字符代码直接放入字符串文字中,以便我可以从设计器视图中使用 Unicode 符号。
这可能吗?
【问题讨论】:
标签: vb.net string unicode designer
要显示 Unicode 字符,可以使用以下语句
ChrW(n) 其中n 是代表 de Unicode 字符的数字。Convert.ToChar(n)Alt + N组合键在编辑器中直接输入字符Char.ConvertFromUtf32(n)&#x....; 语法的XML 字符串分配♥字符的示例:
s = ChrW(&H2665)
s = Convert.ToChar(&H2665)
s = "♥" 'in typing Alt+2665
s = "♥" 'using paste/copy of ♥ from another location
s = Char.ConvertFromUtf32(&H2665)
s = <text>I ♥ you</text>
BUT 当 Unicode 字符大于 0xFFFF(C 语法更易读?)时,只有方法 4、5 和 6 有效!
ChrW() 函数表示构建时出错Convert.ToChar() 函数在运行时崩溃例子
lblCharacter.Text = "This solution works ?"
Debug.Print (Char.ConvertFromUtf32(&H1F600))
s = <text>diable: 😈</text>
PS:直接在 Visual Studio 代码编辑器或 Notepad++ 中粘贴的笑脸 (0x1F600) 已失去背景颜色!说明:粘贴在此答案中的笑脸被橙色填充,但在 Visual Studio 编辑器或 Notepad++ 中,此颜色已消失!
要在 Visual Studio 编辑器中使用字符串文字,您必须使用方法 3 或 4!
在表单中(设计模式)
在属性中(参见文本属性)
【讨论】:
我使用 字符映射 实用程序 (charmap.exe)。运行并选择控件字体中所需的字符,例如 ©Missico™,复制然后粘贴到属性网格中的 Text 属性中。您将不得不更改字体,因为表单的默认字体是“Microsoft Sans Serif”,它不是 Unicode 字体。我认为您不能将此方法用于不可打印的字符。
根据您的需要,您还可以使用本地化,它为每种语言创建资源文件。同样,您将使用charmap.exe 选择并复制所需的字符并将它们粘贴到资源文件中。您可能可以使用不可打印的字符,例如制表符、换行符等,因为这只是一个文本文件 (Unicode)。
【讨论】:
C# 语言通过转义支持这一点:
var str = "\u0030More text";
但这在 VB.NET 中不可用。请注意,您几乎肯定不想要使用 Chr(),它适用于使用默认代码页的遗留代码。您将需要 ChrW() 并传递 Unicode 代码点。
您的具体示例没有问题,&H0030 是“0”的代码,因此您可以简单地将其直接放在字符串文字中。
Dim str As String = "0MoreText"
您可以使用 Charmap.exe 实用程序复制和粘贴没有简单 ASCII 代码的字形。
【讨论】:
将 Chr 替换为 Convert.ToChar:
str = Convert.ToChar(&H0030) & "More text"
【讨论】:
ChrW() 有什么好处吗?
ChrW() 在实际调用 Convert.ToChar() 之前会进行额外检查。
不,这是不可能的,因为 VB 字符串不支持转义序列。只需使用ChrW,这样可以多输入几个字符,但也更简洁。
【讨论】:
我希望您可以使用 XML 文字和 XML 转义,但它不起作用。我认为 XML 文字不允许您使用 &#NN;。虽然 it is a way 包括引号 " 在字符串中。
'Does not compile :('
Dim myString = _
<q>This string would contain an escaped character  if it actually compiled.</q>.Value
【讨论】:
使用ChrW() 函数返回Unicode 字符。
Dim strW As String
strW = ChrW(&H25B2) & "More text"
【讨论】:
Chars 的逻辑字符。在 C# 中,"\Uxxxxxxxx" 带有大号 U 和 8 位数字来表示它们,它们一次转换为多个 Chars。要在 VB 中处理这些,您必须查找它们包含哪些代理字符并将它们编码为 ChrW(c1) & ChrW(c2)。