Firebird a Charset   zodpovězená otázka

VB.NET, WPF, Databáze

VS2008, WPF, .Net Framework 3.5, Firebird 2.0

Dobrý den,

mám k dispozici databázi Firebirdu, která nemá nastavení charsetu (resp. je NONE).

Při spojení s databází dávám do connection stringu parametr CHARSET:=NONE. Výsledky, které po dotazu obdržím obsahují místo písmen "š" pouze obdélníky (špatná znaková sada).

Nastavení databáze nemohu měnit, zkoušel jsem v connection stringu i jiná nastavení znakové sady, ale bezúspěšně.

Nevěděl by někdo co s tím ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S Firebirdem nemám žádné praktické zkušenosti, ale jako první bych zkusil nastavit nějakou podporovanou znakovou sadu místo NONE. Uvidíte, co to udělá.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tady:

http://www.destructor.de/firebird/charse...

se píše, že s Charsetem NONE nelze provádět konverze na jiné znakové sady ani některé funkce pro práci s řetězci. Bude to jen nějaká velmi základní implementace a proto nelze očekávat, že se bude korektně chovat znaky, jako je "š", které se celé nevejdou do jednoho bajtu. Doporučuji používat UTF8 (nikoliv zastaralé UNICODE_FSS, jak se píše v tabulce Character Sets and Collations na stejné stránce), které by si mělo poradit s rozšířenými abecedami správně.

Edit: Teď čtu, že nastavení databáze změnit nemůžete. Vzhledem k tomu, že NONE nepodporuje konverzi nejspíš nebude možné získat řatězce ve formě, v které byli do databáze vloženy. Můžete otevřít databázi v nějakém GUI databázovém manažeru a zkontrolovat, jestli Vám vypíše stringy korektně? Můžete použít například toto:

http://www.sqlmanager.net/en/products/ib...

http://www.ib-aid.com/articles/item129

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Proč by se "š" nevešlo do jednoho bajtu?! Za starých časů to tak bylo u všech znakových sad a kvůli kompatibilitě je to podporováno i ve Frameworku...

To jen nějaký idiot, který databázi navrhoval, nespecifikoval její kódování.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Tak zkoušel jsem v connectionstringu:

ISO8859_1,

ISO8859_2,

UNICODE_FSS,

WIN1250, 1, 2 (s těmí nedostávám vůbec žádné resulty)

Nic nepomohlo.

V programu IBExpert, který používáme, se řetězce zobrazují korektně.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pak by ještě mohla být chyba v konektoru, jakým se do Firebirdu připojujete. Co je to za konektor? Je to oficiální Firebird ADO.NET Data Provider? Pokud ano, vyzkoušel bych ten ODBC ovladač.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je to ze stánek:

http://www.firebirdsql.org/en/net-provid...

ODBC vyzkouším.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pomocí ODBC by to jít mohlo.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Pomocí ODBC to opravdu funguje.

Děkuji za pomoc.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback