【问题标题】:Storing Characters above 128 in string array在字符串数组中存储 128 以上的字符
【发布时间】:2023-02-16 00:36:05
【问题描述】:

下面的 VB.net 代码在早期程序中可以正常使用 128 以上的字符 但它在当前的发展中引发了一个错误 看起来包含 128 个以上标准 Windows 字符的代码页已经在幕后消失了。值得庆幸的是,该代码在旧程序中仍然可以正常工作。

有任何想法吗 ?

Public QAZ, conv As String
Public SREP(200) As String
Public I, J As Integer

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    
    For I = 128 To 190
        SREP(J) = Chr(I)

        J = J + 1
    Next

End Sub

尝试在建议中添加以下行。这停止了​​错误消息,但保留字符串数组为空。

Public SREP(200) As String

Public I, J As Integer

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    
    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
    
    J = 0
    For I = 128 To 190
        SREP(J) = Chr(I)

        J = J + 1
    Next

End Sub

【问题讨论】:

  • VB.Net 使用的是 Unicode,而不是 ASCII + 代码页。此外,没有所谓的“标准”Windows 代码页。默认情况下,您在 Windows 中看到的内容取决于语言选项。这些都是每个配置文件,甚至在同一个 Windows 安装中,不同的用户也可能会看到这些字符的不同值。

标签: vb.net


【解决方案1】:

我不确定你的问题是什么。我试过了,它按预期工作了。

    Dim SREP As New List(Of String)
    For I As Integer = 128 To 190
        Dim foo As Char = ChrW(I)
        SREP.Add(foo)
        Debug.WriteLine(foo)
    Next

我也用同样的结果测试了这个。

    Dim zSREP As New List(Of String)
    For I As Integer = 128 To 190
        Dim foo As Char = Convert.ToChar(I)
        zSREP.Add(foo)
        Debug.WriteLine(foo)
    Next

结果检查。

Dim union As List(Of String) = SREP.Union(zSREP).ToList

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2016-03-17
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多