2013-05-15 134 views
0

如何在vb.Net的字符串中檢測到無法識別的代碼頁字符?這些字符通常顯示爲默認字符,例如「?」或者當前代碼頁無法識別來自其​​他輸出的原始字符時爲正方形。檢測字符串中無法識別的(codepage-unicode)字符

我有一個外部來源的文本字段,它顯示了一些長破折號字符(不是字符(150))的「方形」字符,我希望能夠用字符代碼45(短劃線)替換它以使它兼容,但我無法確定如何檢查替換中的默認特殊「無法識別」的字符。我搜索了網絡,但無法找到解決這個問題的辦法!我玩System.Text.Encoding但仍然可以得到我想要的。任何想法如何做到這一點?

謝謝!

回答

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