检测字符串中的无法识别(codepage-unicode)字符

时间:2013-05-15 13:30:17

标签: vb.net character-encoding character detect

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

我看到这个问题不久前被问过,我觉得你现在找到了答案。无论如何,这就是我现在正在做的事情。我寻找我想要替换的特定字符,在另一个数组中,我把我想要的内容更改为。我希望这适合你。

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