【问题标题】:Detecting Unrecognized (codepage-unicode) Characters in a string检测字符串中无法识别的(codepage-unicode)字符
【发布时间】:2013-05-15 13:30:17
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: vb.net character-encoding character detect


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 2017-12-31
      • 1970-01-01
      • 2020-12-18
      • 2013-05-27
      相关资源
      最近更新 更多