2016-08-23 45 views
1

我有一個文件列表的單詞,不是太不相似,這是我想導入到我的MSSQL數據庫;轉換爲ASCII字符VB.net ssis

Świętochłowice 
Chełmiec 
Wałcz 
... 

我想做一個基本的波蘭字符轉換爲ASCII,以便他們可以通過我的數據庫進行分析。 我正在使用SSIS導入數據,因此我正在使用vb.net腳本來改變導入前/之前的文本。

我試過了;

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
    Row.unsanitised1.Replace("Ą", "A") 
    Row.unsanitised1.Replace("ą", "a") 

    Row.unsanitised1.Replace("Ć", "C") 
    Row.unsanitised1.Replace("ć", "c") 

    Row.unsanitised1.Replace("Ę", "E") 
    Row.unsanitised1.Replace("ę", "e") 

    Row.unsanitised1.Replace("Ł", "L") 
    Row.unsanitised1.Replace("ł", "l") 

    Row.unsanitised1.Replace("Ń", "N") 
    Row.unsanitised1.Replace("ń", "n") 

    Row.unsanitised1.Replace("Ó", "O") 
    Row.unsanitised1.Replace("ó", "o") 

    Row.unsanitised1.Replace("Ś", "S") 
    Row.unsanitised1.Replace("ś", "s") 

    Row.unsanitised1.Replace("Ź", "Z") 
    Row.unsanitised1.Replace("ź", "z") 

    Row.unsanitised1.Replace("Ż", "Z") 
    Row.unsanitised1.Replace("ż", "z") 

    Row.sanitised = Row.unsanitised 
    Row.sanitised1 = Row.unsanitised1 

End Sub 

但是,當文件被讀入時,字符不能正確讀取,它們會更像「Ĺ」,我做錯了什麼?我需要以unicode的形式閱讀嗎?

將文件和vbscript保存在代碼頁1200中以保留波蘭字符。

+1

使用Unicode代碼頁65001 –

+0

@sandeeprawat感謝unicode代碼頁65001似乎大部分工作。由於某種原因,即使在解析數據時,它也會錯過,它看起來與我完全相同。 – Intern87

+0

我會建議用unicode嘗試你的想法。我有一個類似的問題(用輕微不同的字符進行替換),並且在檢查並替換unicode代碼而不是字符本身後它工作正常。 – Tyron78

回答

0

右鍵,

在從該稍微休息一下所以,看着它再次,我發現這個問題。我在這裏發佈它,以防未來人們遇到這種情況,並且目前尚未解決。

@Sandeep Rowat & Tom Blodget在評論中說,代碼頁65001(UTF-8)是必需的。 但是,替換函數仍然不適用於列表中的兩個字符,Ó和ó。

我認爲導入混​​淆了字符並使它們無法識別,這個理論通過導入字符並將它們轉換爲HEX來確保它們是相同的基準字符。

?在導入和代碼中都顯示爲HEX D3。

ó在導入和代碼上都顯示爲HEX F3。

由於它們在導入和代碼中是相同的,這使我相信String.Replace()函數在這些字符上無法正常工作。

我已經通過做一個刪除和隨後插入來替換字符circumnavigated;

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
 

 
     var = Row.unsanitised1.Replace("Ą", "A") 
 
     var.Replace("ą", "a") 
 

 
     var.Replace("Ć", "C") 
 
     var.Replace("ć", "c") 
 

 
     var.Replace("Ę", "E") 
 
     var.Replace("ę", "e") 
 

 
     var.Replace("Ł", "L") 
 
     var.Replace("ł", "l") 
 

 
     var.Replace("Ń", "N") 
 
     var.Replace("ń", "n") 
 

 
     var.Replace("Ó", "O") 'does not work?! 
 
     var.Replace("ó", "o") 'does not work?! 
 

 
     i = var.LastIndexOf("Ó") 
 
     Do While i >= 0 
 
      var = var.Remove(i, 1) 'this works! 
 
      var = var.Insert(i, "O") 'this works! 
 
      i = var.LastIndexOf("Ó") 
 
     Loop 
 

 
     i = var.LastIndexOf("ó") 
 
     Do While i >= 0 
 
      var = var.Remove(i, 1) 'this works! 
 
      var = var.Insert(i, "o") 'this works! 
 
      i = var.LastIndexOf("ó") 
 
     Loop 
 

 

 
     var.Replace("Ś", "S") 
 
     var.Replace("ś", "s") 
 

 
     var.Replace("Ź", "Z") 
 
     var.Replace("ź", "z") 
 

 
     var.Replace("Ż", "Z") 
 
     var.Replace("ż", "z") 
 

 
     Row.sanitised = Row.unsanitised 
 
     Row.sanitised1 = var 
 

 
     i = Nothing 
 

 
    End Sub

我希望別人卡住這個問題。