Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Wangarad 07. 12. 2020, 12:47:34
-
Zdravim.
Doteraz som nemal problem s pouzivanim tohoto
$info = array('Database'=>$db,'UID'=>$user,'PWD'=>$pass, 'CharacterSet'=>'UTF-8','ReturnDatesAsStrings'=>true);
// Connect to the database
$connector = sqlsrv_connect($host, $info);
avsak pri jednej aplikacii mi to vrazia mena uzivatelov v tvare
Ĺ˝ilĂková
a podobne. Co s tym? Pozeral som po googly ale nenasiel som nic co by mi pomoholo.
Databaza je nastavena Slovak_CI_AS tak ako vsetky
-
Zdravim.
Doteraz som nemal problem s pouzivanim tohoto
$info = array('Database'=>$db,'UID'=>$user,'PWD'=>$pass, 'CharacterSet'=>'UTF-8','ReturnDatesAsStrings'=>true);
// Connect to the database
$connector = sqlsrv_connect($host, $info);
avsak pri jednej aplikacii mi to vrazia mena uzivatelov v tvare
Ĺ˝ilĂková
a podobne. Co s tym? Pozeral som po googly ale nenasiel som nic co by mi pomoholo.
Databaza je nastavena Slovak_CI_AS tak ako vsetky
Je otázkou jestli data v té databázi jsou skutečně v kódování, které je nastavené v databázi. Databáze může mít například nastavenou latin1, nicméně data mohou být v 1250. Pokud byste nespecifikoval kódování, a očekával 1250, tak dostanete data korektní. Pokud ale chcete dostat data v UTF8, tak se použije transformace latin1->UTF8, která data zdeformuje. Takže bych se podíval na vlastní kódování databáze, i na to jestli data tomuto kódování odpovídají. Bylo zde docela dost MySQL databází s výchozím Latin1 kódováním, nicméně data v nich byly v Latin2 nebo spíš v 1250.
-
Zdravim.
Doteraz som nemal problem s pouzivanim tohoto
$info = array('Database'=>$db,'UID'=>$user,'PWD'=>$pass, 'CharacterSet'=>'UTF-8','ReturnDatesAsStrings'=>true);
// Connect to the database
$connector = sqlsrv_connect($host, $info);
avsak pri jednej aplikacii mi to vrazia mena uzivatelov v tvare
Ĺ˝ilĂková
a podobne. Co s tym? Pozeral som po googly ale nenasiel som nic co by mi pomoholo.
Databaza je nastavena Slovak_CI_AS tak ako vsetky
Je otázkou jestli data v té databázi jsou skutečně v kódování, které je nastavené v databázi. Databáze může mít například nastavenou latin1, nicméně data mohou být v 1250. Pokud byste nespecifikoval kódování, a očekával 1250, tak dostanete data korektní. Pokud ale chcete dostat data v UTF8, tak se použije transformace latin1->UTF8, která data zdeformuje. Takže bych se podíval na vlastní kódování databáze, i na to jestli data tomuto kódování odpovídají. Bylo zde docela dost MySQL databází s výchozím Latin1 kódováním, nicméně data v nich byly v Latin2 nebo spíš v 1250.
A nejsnašší cesta k opravě? Dump + jeho ruční oprava následovaný zpětným importem dumpu?
-
A nejsnašší cesta k opravě? Dump + jeho ruční oprava následovaný zpětným importem dumpu?
Řekl bych, že ano. MySQL není moje doména - ale u Postgresu bych to svým zákazníkům doporučil. Asi bych dokázal (na Postgresu) o něco rychlejší postup, ale značně ošklivý, a stejně bych musel reindexovat všechny indexy v databázi, takže stejně by tam byl nějaký výpadek, a u větší databáze gro by byla právě reindexace. Takže dump a load je jednoduché, čisté a blbuvzdorné řešení. Bacha u dumpu je nutné nespecifikovat kódování (aby nedošlo k zmatené konverzi), a dost možná, že se bude muset sáhnout do dumpu, a ručně jej poeditovat.
-
MySQL není moje doména
Bacha, tady jde o MS SQL, a podle prvotního popisu je Slovak_CI_AS nastavené správně.
-
MySQL není moje doména
Bacha, tady jde o MS SQL, a podle prvotního popisu je Slovak_CI_AS nastavené správně.
Pořád je otázkou, jestli jsou data v databázi ok?
-
Pořád je otázkou, jestli jsou data v databázi ok?
Napadá mě, nemá to SQL server uložené v UTF-16?
https://docs.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support?redirectedfrom=MSDN&view=sql-server-ver15#Supplementary_Characters
Na FreeBSD musím používat freetds (MS driver tam není k dispozici), a musím používat: client charset = UTF-8
use utf-16 = yes
-
Dakujem za rady. V tej DB je to tiez tak debilne vlozene. Takze som to dropol a nahodil korektne nanovo. To bola najschopnejsia cesta.