2014-10-30 133 views
0

NSTR 2009-A - 底層有一個130萬美元(剩下913萬美元)。 C/E上升到67.1%如何處理奇怪的Unicode字符

下面是上面的文字在記事本+ +與UTF-8編碼開啓的圖像。 'x96'是短劃線,'xA0'是空格。 SQL Server提供無效字符錯誤。我如何擺脫這些@#$#?它引起了我一個巨大的頭痛試圖修復...; -x

enter image description here

下面我試過了。它保持破折號但將'xA0'更改爲問號:

byte[] tempBytes; 
tempBytes = System.Text.Encoding.GetEncoding("ISO-8859-8").GetBytes(notesXML); 
string notesXML = System.Text.Encoding.UTF8.GetString(tempBytes); 

提示感謝,謝謝!

+1

替換功能如何?應該可以使用unicode號碼查找有問題的字符 – Grantly 2014-10-30 00:54:25

+1

難道你不能只配置數據庫接受UTF-8? – 2014-10-30 01:07:55

+0

@Mark,希望在webAPI的c#中處理這個問題,然後到達DB – nanonerd 2014-10-30 01:10:37

回答

2

它看起來像你的原始文本的編碼可能是Windows 1252

96 = U+2013 : EN DASH 
A0 = U+00A0 : NO-BREAK SPACE 

因此,使用System.Text.Encoding.GetEncoding("Windows-1252"),你應該能夠在不破壞它來閱讀你的原文,然後你就可以將其轉換爲任何編碼正在被你的數據庫使用(例如:utf-8)。

+0

他喝藍月亮啤酒,如果他的頭像是一個暗示,他不會出去太多。 Encoding.Default是可能的解決方案。 – 2014-10-31 22:14:10

+0

漢斯,你是歐洲人,如果你的名字是一個暗示。僅僅因爲一家美國公司能夠釀造比歐洲啤酒好的或比歐洲啤酒好的比利時啤酒,請不要嫉妒我的朋友。 – nanonerd 2014-10-31 23:04:42

+0

Tachy - 我最終做了一個直接的字符串替換爲U2013和U2014(以涵蓋en和em短劃線),併爲兩種不同類型的空間做同樣的事情。但從概念上講,我認爲你是說從windows-1252中隱藏整個字符串並將其轉換爲utf-8?如果是這樣,那將是更好的解決方案來轉換所有其他可能的時髦字符。我環顧四周,但不知道如何編碼。如果這是正確的想法,你能提供一個快速代碼同樣的嗎?謝謝。 – nanonerd 2014-10-31 23:09:41