Avatar
JOF
Tým ITnetwork
Avatar
JOF:

Zdravím!
Prosím o pomoc. Potřebuji data z DB firebird.
Pokud napíšu konzolovou aplikaci v C#, tak je čeština v pohodě.
Pokud to samé převedu do ASP.NET, nezobrazují se správně české znaky :(
Konzolová aplikace používá Input i Output Encoding 1250.
Pokusil jsem se stejné kódování nastavit i pro ASP.NET aplikaci, ale asi špatně. Zkoušel jsem:
Globalizace rozhraní .NET na IIS serveru - vše na windows-1250;
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">;
nastavení ve web.config - <globalization fileEncoding="win­dows-1250"
requestEncodin­g="windows-1250" responseEncodin­g="windows-1250" />

Dík za každou radu.

 
Odpovědět 4.11.2012 11:21
Avatar
matesax
Redaktor
Avatar
Odpovídá na JOF
matesax:

Jde hlavně o výstup a tomu nastav UTF-8 v HTTP protokolu - takže:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

Ale nyní existuje i meta přímo na charset...

Encoding definuj v MasterPage...

(Ale encoding nesouvisí s ASP. :) a doufám, že děláš v MVC.)

Editováno 4.11.2012 11:29
 
Nahoru Odpovědět 4.11.2012 11:27
Avatar
JOF
Tým ITnetwork
Avatar
JOF:

Měla by to být jen jednoduchá stránka s výpisem vybraných dat z DB.
Myslel jsem, že to zvládnu i bez MasterPage.
MVC mi zatím nic neříká, ale rád se poučím.
Další problém je se zadáváním hodnot pro vyhledávání v DB -

  • data s diakritikou (např. hledání podle příjmení) nenajde.

Na rozdíl od konzolové aplikace.
Předpokládám, že problém je stejný - kódování češtiny?!

 
Nahoru Odpovědět 4.11.2012 11:55
Avatar
matesax
Redaktor
Avatar
Odpovídá na JOF
matesax:

Diakritika v DB - tedy v captionech sloupců = fujtajbl... :) Ty pojmenuj anglicky...

 
Nahoru Odpovědět 4.11.2012 12:10
Avatar
JOF
Tým ITnetwork
Avatar
JOF:

Názvy sloupců jsou bez diakritiky, ale hledané hodnoty s diakritikou, kterém zadám do textboxů mi v DB (na rozdíl od konzolové aplikace) nenajde.
Hodnoty bez diakritiky jsou OK.

 
Nahoru Odpovědět 4.11.2012 12:12
Avatar
matesax
Redaktor
Avatar
Odpovídá na JOF
matesax:

A jak to hledáš? (Doufám, že v dotazech.) Netuším, jak to máš - možná dotazovanou hodnotu převeď do podoby bez diakritiky a hledanou také...

 
Nahoru Odpovědět 4.11.2012 12:18
Avatar
JOF
Tým ITnetwork
Avatar
JOF:

Hledám to takhle:
FbCommand command = new FbCommand("SELECT IDENT FROM OSOBY WHERE PRIJMENI = @prijmeni AND OSCISLO = @oscislo", connection);
command.Parame­ters.AddWithVa­lue("@prijmeni", tbPrijmeni.Text);
command.Parame­ters.AddWithVa­lue("@oscislo", tbCisloKarty.Text);

object ident = command.Execu­teScalar();

pokud je příjmení s diakritikou, tak nic nenajde :-(

 
Nahoru Odpovědět 4.11.2012 12:23
Avatar
JOF
Tým ITnetwork
Avatar
JOF:

Pokud zadám do textboxu ç (Alt+135) místo š, tak záznam v DB najde...

 
Nahoru Odpovědět 4.11.2012 12:40
Avatar
matesax
Redaktor
Avatar
Odpovídá na JOF
matesax:

Zkus převést text z textboxu:

protected string Convertor(string asciiString)
{
System.Text.Encoding ascii = System.Text.Encoding.ASCII;
System.Text.Encoding utf8 = System.Text.Encoding.UTF8;

byte[] asciiBytes = ascii.GetBytes(asciiString);
byte[] utf8Bytes = System.Text.Encoding.Convert(ascii, utf8,
asciiBytes);

char[] utf8Chars = new char[utf8.GetCharCount(utf8Bytes, 0,
utf8Bytes.Length)];
utf8.GetChars(utf8Bytes, 0, utf8Bytes.Length, utf8Chars, 0);
string utf8String = new string(utf8Chars);

return utf8String;
}
 
Nahoru Odpovědět 4.11.2012 13:00
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na JOF
David Čápka:

Databázi bych převedl do UTF8, potom nic nemusíš řešit.

Nahoru Odpovědět 4.11.2012 14:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
JOF
Tým ITnetwork
Avatar
Odpovídá na matesax
JOF:

ten Convertor už jsem zkoušel (i s Encoding.GetEn­coding(1250) )
bohužel to problém nevyřešilo :(

 
Nahoru Odpovědět 4.11.2012 14:18
Avatar
JOF
Tým ITnetwork
Avatar
Odpovídá na David Čápka
JOF:

Bohužel ta DB není moje. Připojuji se na DB od jiné firmy.
Její charset je 1250. Překvapilo mne, že přenastavení charset
v connectionStringu z 1250 na UTF8 nemá na nic vliv :o

 
Nahoru Odpovědět 4.11.2012 14:21
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na JOF
David Čápka:

V připojení k databázi se dá nastavit, aby navenek vystupovala pod jiným kódováním, moc se v tomhle nevyznám, ale myslím, že na to byl příkaz SET NAMES. Mělo by jít, že se připojíš, něco zavoláš a bude to v UTFKu. Zkus pogooglit.

Nahoru Odpovědět 4.11.2012 14:25
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.