2013-08-21 1 views
7

Mam plik tekstowy z pionowymi wartościami pionowymi paska {|} i używam źródła pliku płaskiego do odczytania wartości, które nie powiedzie się z powyższym błędem.SSIS - Tekst został obcięty lub jeden lub więcej znaków nie pasowało do docelowej strony kodowej - Znaki specjalne

Mam program Menedżer połączeń płaskich, w którym ustawiam szerokość kolumny każdej kolumny. Szczególna kolumna, która powoduje błąd

dataType - DT_WSTR

OutputColumnWidth - 30

Problemem jest podnoszona tylko wtedy, gdy dana kolumna zawiera znaki specjalne, takie jak 'Société Amomyna da Pramt Hgyme' chociaż wciąż ma tylko 30 znaków.

Jeśli zwiększę szerokość kolumny, to działa, ale muszę wiedzieć, że to właściwe rozwiązanie.

Proszę dać mi znać, jeśli potrzebujesz więcej informacji. Dzięki z góry

Odpowiedz

19

Jeśli pójdziesz na płaski menedżer połączeń plik pod Zaawansowane i spojrzeć na „OutputColumnWidth” opis za ToolTip Powie ci, że Composit znaków może używać więcej przestrzeni. Tak więc "é" w "Société" najprawdopodobniej zajmuje więcej niż jedną postać.

EDIT: Tu jest coś o tym: http://en.wikipedia.org/wiki/Precomposed_character

+0

Dzięki, więc zwiększył „OutputColumnWidth” do 40 z 30, ale w trakcie ADO NET fazy Destination nie powiedzie się z powodu błędu „Podana wartość typu String z źródło danych nie może zostać przekonwertowane na typ nvarchar podanej kolumny docelowej "tak to oznacza, że ​​szerokość kolumny w tabeli bazy danych również musi zostać zwiększona? – Swamy

+0

Może to być problem z kodowaniem, a nie z rozmiarem. Kolumna NVARCHAR bazy danych powinna obsługiwać ciągi znaków Unicode, ale może być konieczne skonfigurowanie zadania ADO, aby je obsłużyć. – TsSkTo

+0

Tak, zmieniłem otoczenie na UTF-8 i wszystkie problemy zostały rozwiązane. Nie muszę nawet zwiększać OutputColumnWidth. To mi też pomogło "http://www.joelonsoftware.com/articles/Unicode.html" – Swamy