IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
skilledt
Člen
Avatar
skilledt:28.5.2019 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.5.2019 22:35
 
Odpovědět
28.5.2019 22:34
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Jaroslav Smrž:29.5.2019 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.5.2019 9:24
/* Life runs on code */
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na skilledt
Jaroslav Smrž:29.5.2019 9:25

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

Nahoru Odpovědět
29.5.2019 9:25
/* Life runs on code */
Avatar
skilledt
Člen
Avatar
Odpovídá na Jaroslav Smrž
skilledt:29.5.2019 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.5.2019 11:09
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na skilledt
Jaroslav Smrž:29.5.2019 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.5.2019 11:30
/* Life runs on code */
Avatar
Odpovídá na skilledt
Michal Štěpánek:30.5.2019 8:02

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

Nahoru Odpovědět
30.5.2019 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.6.2019 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.6.2019 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.