Chybná čeština SQLite VB.NET   otázka

VB.NET, Databáze

Ahoj potřeboval bych poradit. Dostal jsem nastarost SQLite3 databázi. Kódování db je nastaveno na UTF8. Problém mám s vyčítáním češtiny u jmen. Když svým programem udělám insert a vyčtu si vlastní uloženeé záznamy tak je čeština OK. Ale jakmile vyčítám data již dříve ne mnou uložená tak namísto češtiny vypíše kosočtverc s otazníkem nebo po použití konverzních funkcí prázdný znak.

Používám program SQLite expert personal pro správu obsahu db a všiml jsem si že pokud v nastavení

zašktrnu vyčítání dat v (UTF-8,UTF16) tak mi to žačne taky vypisovat místo češtiny kosočtverce s otazníkem a když zaškrtnu Default ANSI code page tak je čeština ok.

Navíte proto jak vyčítat data v ANSI? ve vb.NET

Přikládám jednoduchý příklad jak vyčítám.

Dim f As New OpenFileDialog
    f.Filter = "SQLite 3 (*.db3)|*.db3|All Files|*.*"
    If f.ShowDialog() = DialogResult.OK Then
        Dim SQLconnect As New SQLite.SQLiteConnection()
        Dim SQLcommand As SQLiteCommand
        SQLconnect.ConnectionString = "Data Source=" & f.FileName & ";"
        SQLconnect.Open()
        SQLcommand = SQLconnect.CreateCommand
        SQLcommand.CommandText = "SELECT * FROM foo"
        Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
        lst_records.Items.Clear()
        While SQLreader.Read()
            lst_records.Items.Add(String.Format("ID = {0}, Title = {1}, Description = {1}", SQLreader(0), SQLreader(1), SQLreader(2)))
            'Optionally use the variable names to identify columns
            'De lst_records.Items.Add(String.Format("ID = {0}, Title = {1}, Description = {1}", SQLreader("id"), SQLreader("title"), SQLreader("description")))
        End While
        SQLcommand.Dispose()
        SQLconnect.Close()
    End If

Všem děkuju za připomínky rady a nasměrování dobrým směrem. :)

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

Obávám se, že knihovna System.Data.SQLite podporuje pouze kódování UTF-8 a UTF-16. Pokud jsou data v databázi uložena v kódování ANSI, System.Data.SQLite s nimi bude stejně pracovat jako kdyby byla v UTF. Jediné řešení co mě momentálně napadá je exportovat data z něčeho, co je korektně načte a nacpat je tam znovu ve správném kódování.

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

To je divný protože vim 100% že ji využívají další dva programy které pracují s touto DB jeden je v C# druhy v Delphi a jedou v pohodě :(

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

Delphi je uplně něco jiného a ta druhá .NET aplikace nemusí využívat System.Data.SQLite.

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

Kdyby byla možnost sem nějak připojit soubor hodil bych tu db sem třeba by to někdo rozlouskl.

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

Jak Vámi vložená data vypadají přímo v databázi?

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

Mnou zapsaná a vyčtená data mají češtinu vpořádku. Když vypisuji data již dříve zapsaná vypíše místo češtiny kosočtverec s otazníkem nebo prázdný znak.

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

Ptal jsem se na úrovni databáze - tj. bez použítí jakýchkoliv custom tools či SW - například s použitím ofic. tool či cmd line

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

Moje jsou v pořádku s češtinou ty prvotní jsou s otazníky v kosočtverci :( Divný že v tech puvodních programech co jsem převzal to funguje :(

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

těžko mohou být veškeré znaky na úrovni DB v pořádku, když se Vám každý zobrazuje jinak. Neměl jsem na mysli kontrole přes Váš program, u kterého nevíte zda něco "nekomolí",ale kontrolu přímo v databázi - bez využití Vašeho či předchozího toolu. Obecně jinak záleží jak se do databáze připojujete, zda přes "nějaký" ODBC,JDBC, atd. jednotlivé xDBC konektory mohou mít různá nastavení regionu či přímou závislost na regionu prostředí.

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

Díky za tip zkusím jiný konektor a dám vědět.

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