Sleva na školení Naučit se HTML & CSS, JS a Bootstrap
Získej 500 Kč na naše školení. Více zde
Probíhá výprodej HTML & CSS, JavaScript a Bootstrap

Diskuze: Problém s ukládáním českých znaků do databáze - Web Service

Aktivity (4)
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
I have no idea what it is doing but I´m scared to delete it... xD
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
I have no idea what it is doing but I´m scared to delete it... xD
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
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
I have no idea what it is doing but I´m scared to delete it... xD
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.