Zadejte hledaný výraz...

Znaková sada – MSSQL vs MySQL

Zdravím,
migruji data z MSSQL do MySQL (utf8_general_ci).
Mám možnost skrz podporu nastavit znakovou sadu na serveru MSSQL.
Pořád nemůžu přijít jak na to.
Zkoušel jsem iconv("CP1250", "UTF-8", $text) ,
ale neuspěšně.
Pokud dám pouze vypsat text z MSSQL (echo ...) výstup je v pohodě, ale v MySQL ne.
Dovedl by mi někdo poradit?
Děkuji
30. 10. 2014 11:25:38
https://webtrh.cz/diskuse/znakova-sada-mssql-vs-mysql#reply1064979
duben
verified
rating uzivatele
(49 hodnocení)
30. 10. 2014 11:33:54
Přes co to migruješ? Jak to kontroluješ v MySQL? Pokud to vypisuješ přes PHP script máš nastavené správně kódování a nameset pro MySQL?
Pokud export z MSSQL funguje správně (výstup je ok), tak bych hledal problém jinde. Mimochodem není jednoduší ty data migrovat přímo nějakými nástroji pro DB než přes PHP? Třeba napojit se z MSSQL pomocí ODBC na MySQL a data tam prostě nalít napřímo, nebo pomocí nějaké SSIS?
30. 10. 2014 11:33:54
https://webtrh.cz/diskuse/znakova-sada-mssql-vs-mysql#reply1064978
Mám v rámci vývoje eshopu aktualizovat data v lokální MySLQ z cizí MSSQL na níž běží jejich účetní systém a správa produktů.
Na MSSQL tedy mohu pouze přes jejich podporu (v tomhle případě tedy změna znakové sady mssql db.)
Používám v aplikaci utf8_general_ci , a nedaří se mi konverze mezi sadami.
respektive jakou sadu bych měl použít v MSSQL a jakou funkcí, nebo jakým stylem texty transformovat pro vložení do mysql s danou znakovou sadou. ?
Nepoužívám žádný ORM
Hlavní kódy:
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD);
mysql_query("SET CHARACTER SET utf8");
mysql_select_db(SQL_DBNAME);
// mssql config
$serverName = "xxxxxxxx:port";
$connectionInfo = array( "Database"=>"DB NAME", "UID"=>"xxxx", "PWD"=>"yyyy");
$con = mssql_connect($serverName, $connectionInfo, $connectionInfo)
or die('Could not connect to the server!');
mssql_select_db($connectionInfo)
or die('Could not select a database.');
mssql_query("SET ANSI_NULLS ON");
mssql_query("SET ANSI_WARNINGS ON");
$sql = "XXXXXXXXX"; // select do MSSQL
$result = mssql_query($sql)
or die('An error occured: ' . mssql_error());
while ($row = mssql_fetch_assoc($result)) {
$row = iconv("CP1250", "UTF-8", $row);
$row = clearUrlName($row);
$mysql_sql = "INSERT INTO `xxxxxxx`(".join(",", array_keys($row)).") VALUES ('".join("','", $row)."')";
echo $mysql_sql.'
';
mysql_query($mysql_sql);
}
a místo "Čistící prostředky, mycí prostředky, prací prostředky"
dostanu "Cistící prostredky, mycí prostredky, prací prostredky"
V klientu (HeidySQL) je vše v pořádku,
ale už PHP výstup není správně, při mssql znakové sadě "Latin1_General_CI_AS"
30. 10. 2014 13:40:53
https://webtrh.cz/diskuse/znakova-sada-mssql-vs-mysql#reply1064977
duben
verified
rating uzivatele
(49 hodnocení)
6. 11. 2014 21:03:19
Zkus ještě přidat
mysql_query("SET NAMES utf8");
Takže začátek
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD);
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");
mysql_select_db(SQL_DBNAME);
Mimochodem to PHP máš určitě uložené v UTF-8? (Mě se stává že si nevšimnu že jsem v 1250 nebo že nenadefinuju meta description pro výstup v HTML a tak data nelezou správně z prohlížeče).
6. 11. 2014 21:03:19
https://webtrh.cz/diskuse/znakova-sada-mssql-vs-mysql#reply1064976
Už jsem na to přišel, tenhle script by taky nefungoval.
Ač mám tabulky v UTF8, měl jsem příkazy takto:
mysql_query("SET CHARACTER SET utf8");
mysql_select_db(SQL_DBNAME);
takže tohle
$row = iconv("CP1250", "UTF-8", $row);
nefungovalo jak mělo, respektive DB nebyla připravená přijmout string v UTF8, ač je to divný.
Pomohlo teda prohození prvních 2 příkazů, takže tohle funguje (pro ostatní, kdo budou mít tenhle problém)
mysql_select_db(SQL_DBNAME);
mysql_query("SET CHARACTER SET utf8");
Díky "duben" za ochotu :-)
7. 11. 2014 09:41:26
https://webtrh.cz/diskuse/znakova-sada-mssql-vs-mysql#reply1064975
Lukas Pribyl
verified
rating uzivatele
18. 11. 2014 10:25:36
Zdravíčko,
já lehce navážu souvisejícím. Nejde mi do MySql importovat xml vytvořené v MSSql databázi. Je na to nějaký lehký konvertor? Nebo jakým způsobem to udělat?
18. 11. 2014 10:25:36
https://webtrh.cz/diskuse/znakova-sada-mssql-vs-mysql#reply1064974
duben
verified
rating uzivatele
(49 hodnocení)
18. 11. 2014 17:19:26
To není lehké navázání na téma, to je spíš úplně nový dotaz. Založ na to raději nové vlákno. A přidej možná trochu víc popisu, jak ti to nejde, co ti to píše, jak exportuješ, jak to importuješ, jeslti máš stejné DB struktury apod.
18. 11. 2014 17:19:26
https://webtrh.cz/diskuse/znakova-sada-mssql-vs-mysql#reply1064973
Pro odpověď se přihlašte.
Přihlásit