.net ListView似乎在UTF-8方面有问题
出于美观的考虑,我想用实际的箭头字符(.net ListView似乎在UTF-8方面有问题,.net,listview,utf-8,.net,Listview,Utf 8,出于美观的考虑,我想用实际的箭头字符(→)。它在任何地方都能正常工作,除了在列表视图项中,箭头被一个空正方形代替 你知道为什么吗 代码(VB.Net,目标框架2.0): 输出: 很明显,没有责备。在ListView的上下文中使用utf-8是没有意义的。NET字符串内部存储在utf-16中 问题更新后:当字体没有用于显示代码点的图示符时,将显示一个矩形。使用charmap.exe小程序进行故障排除。并确保您确实正确读取了文件。使用调试器检查字符串。使用字符串的tocharray()方法查看单个字
→代码>)。它在任何地方都能正常工作,除了在列表视图
项中,箭头被一个空正方形代替
你知道为什么吗
代码(VB.Net,目标框架2.0):
输出:
很明显,没有责备。在ListView的上下文中使用utf-8是没有意义的。NET字符串内部存储在utf-16中
问题更新后:当字体没有用于显示代码点的图示符时,将显示一个矩形。使用charmap.exe小程序进行故障排除。并确保您确实正确读取了文件。使用调试器检查字符串。使用字符串的tocharray()方法查看单个字符代码。如何将字符添加到字符串中?显示代码。我添加了一个MWE。在一个简单的标签
中加载相同的文本时没有问题,无论我选择哪种字体,都会发生这种情况。我添加了一个MWE,它不会从外部文件加载字符串。好的,按照解释,追逐字体角度。是的,但是在其他控件中使用相同的字体没有问题(标签
,…)。由于某种原因,所有非ASCII字符(如中文字符)都会出现相同的问题,我现在似乎无法重现此问题…:/
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim ListView1 As New System.Windows.Forms.ListView()
Dim ColumnHeader1 As New System.Windows.Forms.ColumnHeader()
Dim ColumnHeader2 As New System.Windows.Forms.ColumnHeader()
Dim ListViewItem1 As System.Windows.Forms.ListViewItem = New System.Windows.Forms.ListViewItem(New String() {"Arrow", "A → B"})
ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {ColumnHeader1, ColumnHeader2})
ListView1.Items.AddRange(New System.Windows.Forms.ListViewItem() {ListViewItem1})
ListView1.Location = New System.Drawing.Point(12, 12)
ListView1.Size = New System.Drawing.Size(205, 150)
ListView1.View = System.Windows.Forms.View.Details
Me.Controls.Add(ListView1)
End Sub
End Class