Předvánoční slevová akce Java týden
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!
Avatar
skilledt
Člen
Avatar
skilledt:28. května 22:34

Zdravím, pracuji na webovém rozhraní(napsaném v ASP Netu, jedná se o Web Service), pomocí kterého komunikuje moje mobilní aplikace s databází(konkrétně se jedná o databázi nexusDb, s níž komunikuji prostřednictvím ado.net providera). Narazil jsem ale na problém, kdy se mi nedaří do databáze uložit české znaky(do databáze se na místech znaků s diakritikou zapíšou otazníky).
Jedná se tedy zřejmě o problém s kódováním řetězce, který se snažím do databáze uložit. Chtěl jsem se tedy zeptat, v jakém kódování jsou defaultně stringy v .netu, případně mohu je nějak převést na kódování win1250? V kódování znaků a znakových sadách mám trochu hokej, takže uvítám jakýkoliv tip. A je v tomto případě rozhodující kódování stringu na straně té mé webové služby nebo záleží spíše na nastavení databáze, konkrétní tabulky atd?

Editováno 28. května 22:35
 
Odpovědět
28. května 22:34
Avatar
Jaroslav Smrž
Redaktor
Avatar
Jaroslav Smrž:29. května 9:24

Ahoj, pokud chceš ukládat české znaky, musíš mít nastavené kódování na UTF-8. V C# to bude vypadat nějak takto:

public static System.Text.Encoding UTF8 { get; }

Dále pak nastavené i kódování v databázi na něco jako utf8_czech_ci

Nahoru Odpovědět
29. května 9:24
/* Life runs on code */
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na skilledt
Jaroslav Smrž:29. května 9:25

Sorry, zapomněl jsem tě označit...

Nahoru Odpovědět
29. května 9:25
/* Life runs on code */
Avatar
skilledt
Člen
Avatar
Odpovídá na Jaroslav Smrž
skilledt:29. května 11:09

Dekuji za odpoved, jen mi neni jasne kde se to konkretne nastavuje, nejakym zpusobem prekonvertuju konkretni string nebo nejak globalne? A jal vlastne poznam v jskem kodovani je dany string ulozen? Pripadne jake je defaultni kodovani pro stringy?
Bylo mi receno, ze do dane databaze je potreba ukladat stringy ve win1250, ne v unicode

 
Nahoru Odpovědět
29. května 11:09
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na skilledt
Jaroslav Smrž:29. května 11:30

Pomocí win1250 české znaky nedostaneš. Na to potřebuješ UTF-8. Defaultní kódování netuším, ale můžeš si ho nastavit pro celý projekt ve Visual Studiu. Já to právě pochopil tak, že to chceš změnit jen někde. To by ti potom pomohl kód výše, který umístíš do příslušné třídy. NexusDB neznám, takže s tím moc nepomohu. Je nexusDB podmínkou? Nebylo by lepší použít MSSQL nebo MySQL?

Nahoru Odpovědět
29. května 11:30
/* Life runs on code */
Avatar
Odpovídá na skilledt
Michal Štěpánek:30. května 8:02

A jaké kódování máš nastaveno v té databázi?

Nahoru Odpovědět
30. května 8:02
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
skilledt
Člen
Avatar
skilledt:6. června 16:03

Tak jsem to nakonec vyřešil tím, že jsem celý string nejdříve rozložil na jednotlivé znaky a ty pak ukládám pomocí CHR funkce. Je to trošku oklika, ale fachčí to.

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
6. června 16:03
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 7 zpráv z 7.