2016-08-23 6 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 

Однако, когда файл считывается, символы не читаются должным образом, они приходят в более как «lx,» что я делаю не так? Нужно ли читать их в формате unicode?

Файл и vbscript сохраняются в кодировке 1200 для сохранения польских символов.

+1

Использование кодовой страницы Юникода 65001 –

+0

@sandeeprawat thanks unicode code page 65001, похоже, работает по большей части. По какой-то причине он пропускает Ó & ó, хотя, когда данные анализируются, он выглядит идентично мне. – Intern87

+0

Я бы предложил попробовать вашу идею с помощью юникода. У меня была аналогичная проблема (с небольшими разными символами для замены), и она отлично работала после проверки и замены кодов Юникода вместо самих символов. – Tyron78

ответ

0

Право,

Таким образом, после небольшого перерыва от этого и смотрит на нее еще раз, я нашел эту проблему. Я размещаю его здесь, если люди натолкнутся на это в будущем и видят, что это в настоящее время не решено.

@Sandeep Rowat & Tom Blodget сказал в комментариях, требуется кодовая страница 65001 (UTF-8). Однако функция замены по-прежнему не работает для двух символов в списке: Ó и ó.

Я думал, что импорт ввел в заблуждение персонажей и сделал их неузнаваемыми, эта теория была протестирована путем импорта символов и преобразования их в HEX, гарантируя, что они являются одними и теми же базовыми символами.

Ó появился как HEX D3 как для импорта, так и для кода.

≈ появился как HEX F3 как для импорта, так и для кода.

Поскольку они были одинаковыми при импорте и в коде, это заставило меня поверить, что функция String.Replace() не работает так, как предполагалось на этих символах.

У меня возникла проблема, связанная с этим, удалив и впоследствии вставку для замены символов;

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

Я надеюсь, что никто больше не застревает с этой проблемой.

Смежные вопросы