2011-08-02 43 views
1

工作正常,請原諒奇怪的頭銜,但我不知道如何更好的來形容我的問題。「奇怪的字符」 SQL服務器上,而不是通過CSV

我們的SQL服務器(2008)數據庫都有,相當合理,在文本框的數據,看起來像

「微軟XML·ÖÎö³ÌÐòºÍSDK(未知)」

我從CSV文件中讀取數據,在C#它具有相同的數據類型。我們使用LumenWorks.Framework.IO.Csv CsvReader(因爲我們有時需要處理真正的大文件)。我們有這個源代碼。

這些領域已經很好了(如上IE)在CSV文件本身,而是當從CSV讀取的數據它最終表現爲

「微軟XML SDK(未知)」

這是錯誤的,(顯然)在查詢中使用它時,回數據庫沒有找到匹配。我可以很好地使用SMSS中的原始字符串進行查詢。

我在網上搜索受阻,因爲我很難找到正確的方面去尋找問題!

任何人都可以在適當的條款解釋這個問題,也許有想法,我應該在CsvReader代碼(或我們)可能會導致此誤譯尋找什麼樣的東西?

+1

聽起來像一個編碼問題。你在每一步選擇編碼還是你的框架爲你選擇一個? – alun

回答

2

我懷疑你需要指定你的CSV文件的編碼。

如果您目前正在做這樣的事情:

using (var csv = new CsvReader(new StreamReader("foo.csv"), true)) 
{ 
    // ... 
} 

...然後嘗試這樣的事情,而不是:

using (var csv = new CsvReader(new StreamReader("foo.csv", Encoding.Unicode), true)) 
{ 
    // ... 
} 

請注意,我不知道編碼,你會是什麼需要使用。我以Unicode爲例。 (我認爲StreamReader的默認編碼爲UTF8,如果你不指定。)

+0

聽起來很明智。據我所知,這些文件是ANSI,所以我會試試。 – kpollock

+1

顯然,您可能需要'var enc = Encoding.GetEncoding(myCodePage)' –

+0

UTF-7。我試過的最後一件事! – kpollock