Vb.net 检测字符串中无法识别的(代码页unicode)字符

Vb.net 检测字符串中无法识别的(代码页unicode)字符,vb.net,character-encoding,character,detect,Vb.net,Character Encoding,Character,Detect,如何在vb.Net中检测字符串中无法识别的代码页字符?当当前代码页无法从其他输出中识别原始字符时,这些字符通常以默认字符(如“?”或正方形)显示 我有一个来自外部源的文本字段,它为一些长破折号字符(不是chr(150))显示“方形”字符,我希望能够用字符代码45(破折号)替换它以使其兼容,但我无法确定如何在替换中检查默认的特殊“未识别”字符。我在网上搜索了一下,但找不到解决这个问题的办法!我玩过System.Text.Encoding,但仍然可以得到我想要的。你知道怎么做吗 谢谢 我知道这个问题

如何在vb.Net中检测字符串中无法识别的代码页字符?当当前代码页无法从其他输出中识别原始字符时,这些字符通常以默认字符(如“?”或正方形)显示

我有一个来自外部源的文本字段,它为一些长破折号字符(不是chr(150))显示“方形”字符,我希望能够用字符代码45(破折号)替换它以使其兼容,但我无法确定如何在替换中检查默认的特殊“未识别”字符。我在网上搜索了一下,但找不到解决这个问题的办法!我玩过System.Text.Encoding,但仍然可以得到我想要的。你知道怎么做吗


谢谢

我知道这个问题很久以前就被问过了,我想你现在已经找到答案了。无论如何,这就是我目前正在做的。我寻找我要替换的特定字符,然后在另一个数组中放入我想要更改的字符。我希望这对你有用

Private Function CleanText(TextToClean As String) As String
    Dim CleanedText As String = TextToClean
    Dim BadText(5) As Char
    Dim GoodText(5) As String

    BadText(0) = ChrW(169)  ' © (alt 0169, copyright)
    BadText(1) = ChrW(174)  ' ® (alt 0174, registered trademark)
    BadText(2) = ChrW(8482) ' ™ (alt 0153, trademark)
    BadText(3) = ChrW(8364) ' € (alt 0128, Euro)
    BadText(4) = ChrW(176)  ' ° (alt 0176, degrees)

    GoodText(0) = "(c)"
    GoodText(1) = "(r)"
    GoodText(2) = "(tm)"
    GoodText(3) = "(euro)"
    GoodText(4) = "o"

    For i As Integer = 0 To BadText.GetUpperBound(0)
        CleanedText = CleanedText.Replace(BadText(i), GoodText(i))
    Next

    Return CleanedText
End Function