Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: C#, ASP.NET, firebird a čeština

C# .NET .NET (C# a Visual Basic) C#, ASP.NET, firebird a čeština American English version English version

Aktivity (1)
Avatar
JOF
Tým ITnetwork
Avatar
JOF:4.11.2012 11:21

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:4.11.2012 11:27

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:4.11.2012 11:55

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:4.11.2012 12:10

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:4.11.2012 12:12

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:4.11.2012 12:18

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:4.11.2012 12:23

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:4.11.2012 12:40

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:4.11.2012 13:00

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:4.11.2012 14:07

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:4.11.2012 14:18

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:4.11.2012 14:21

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:4.11.2012 14:25

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.