C# i Firebird i Polskie znaki

0

Witam,

W bazie Firebird mam dane z Polskimi znakami, kiedy pobieram je do C# nie dekoduje mi polskich znaków.

Do pobierania wykorzystuje bibliotekę "FirebirdSql.Data.FirebirdClient", w bazie danych mam ustawione kodowanie "ASCII"

Moja klasa do robienia selectów:

 static public FbDataReader Select(string query)
        {

            Connect();
            FbCommand myCommand = new FbCommand();
          
            myCommand.CommandText = query;
            myCommand.Connection = connection;         
            FbDataReader reader = myCommand.ExecuteReader();
            
            return reader;
        }


0
  1. Zmień,jeśli możesz na utf8.
  2. Nie wiem jak jest w firebird ale np. w Mysql-a (tak, wiem) trzeba wpisać kodowanie w connection string-u.
0

Jak biorę UTF-8 w bazie to przy odczytywaniu Readera błąd wywala, w connection stringu też próbowałem zmienić ale bez efektu :/
W connectionstringu niemogę ustawić UTF-8 po wpisaniu:

 cs.Charset = "UTF-8"

wali błędem

inne bez problemu się ładują np

cs.Charset = "ISO8859_2";
cs.Charset = "ASCII";
0

Ok żle wpisywałem bez myślnika przyjęło, ale READER się wywala z błędem "IscException: arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets"

0

A co jest w query?
http://www.firebirdfaq.org/faq81/

0
jacek.placek napisał(a):

A co jest w query?
http://www.firebirdfaq.org/faq81/

Query puszczam najprostsze możliwe "select * from KATEGORIE"

Problem udało mi się obejść naokoło:

  1. W ISQL -> zrobiłem zapytanie i do pliku wpuściłem odpowiedzi. I przez ISQL polskie znaki się zapisały.
  2. Stworzyłem nową tabele z formatowaniem "WIN1250" i tam z pliku wgrałem wgrałem ponownie te dane.
  3. Ten sam reader odczytuje te dane bez problemu.
  4. Zastanawia mnie czemu wcześniej robiąc konwersję kodowania w bazie z ASCII na WIN1250 nie pomagało. Mam kopie bazy i próbuje znaleźć przyczynę.
0
smutnyAndrzej napisał(a):
jacek.placek napisał(a):

A co jest w query?
http://www.firebirdfaq.org/faq81/

Query puszczam najprostsze możliwe "select * from KATEGORIE"

Problem udało mi się obejść naokoło:

  1. W ISQL -> zrobiłem zapytanie i do pliku wpuściłem odpowiedzi. I przez ISQL polskie znaki się zapisały.
  2. Stworzyłem nową tabele z formatowaniem "WIN1250" i tam z pliku wgrałem wgrałem ponownie te dane.
  3. Ten sam reader odczytuje te dane bez problemu.
  4. Zastanawia mnie czemu wcześniej robiąc konwersję kodowania w bazie z ASCII na WIN1250 nie pomagało. Mam kopie bazy i próbuje znaleźć przyczynę.

A to też ciekawe bo jak do tej starej bazy puszczam: "select CAST(KATEGORIE.KATEGORIE_NAZWA AS varchar(100) character set WIN1250) from KATEGORIE"

To się wywala przy pierwszym Polskim znaku :/ chyba jak wpisuje przez C# do bazy to one się trochę inaczej kodują i dlatego później moge je odczytać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1