2012-10-23 34 views
0

我的內容包含多個BOM(EF BB BF)字符,我想將其刪除。字符在字符串中間我想簡單地刪除它們。從AJAX發佈的字符串中刪除BOM字符

數據來自JavaScript源,我從CKEditor實例中獲得。然後我發佈變量並在後端將其讀爲字符串,並且BOMS在那裏。現在,它們仍然保持原樣,但這會導致在解釋角色並開始顯示中間內容時發生後處理錯誤。我懷疑他們來自一些被拷貝到我的CKEditor中的東西。

我可以通過char逐字符串char,但我不知道如何與BOM進行比較。是否有可能比較字符串字節的十六進制值並比較三個字節序列?

回答

4

爲UTF-8 BOM字節會轉換到\ufeff。 Unicode字符「零寬度不間斷空間」,看不到它們,聽不到它們。將它們過濾出來:

var good = bad.Replace("\ufeff", ""); 
+0

大獲成功!有一個問題,可能會導致問題,通過刪除其他字節翻譯成相同的Unicode字符?我懷疑如果他們被刪除,我會錯過任何其他重要或值得一提的角色? – Nenotlep

+1

你看不到它們,你聽不到它們。 –

0

嘗試以下操作:

CleanString = DirtyString.Replace("\u00EF\u00BB\u00BF", null); 
+0

我測試這個的方法是'string s2 = s.Replace(...)',然後是'Debug.WriteLine(s2);'。然後我將輸出窗口的輸出複製粘貼到Notepad ++並切換到查看HEX:我仍然看到BOM。我試錯了嗎? – Nenotlep

+0

這就是它爲我工作的方式。也許你會發現[this](http://stackoverflow.com/questions/2502990/create-text-file-without-bom?rq=1)有幫助。 –