Autor Zpráva
leorond
Profil
Ahoj, rád bych věděl zda je možné nějak doplnit tuto funkci o charset

<?php
function connect() {
    mssql_connect("IP", "user", "pass");  //pripojime k serveru
    mssql_select_db("databaze");  //vybereme databazi
}
?>

v mysql by to šlo takto mysql_set_charset("utf8"); ale co vím tak MSSQL tento zápis nepodporuje.

Zkoušel jsem dodat ini_set('mssql.charset', 'UTF-8');, nastavit kódování v php.ini a prošel tisíce návodů na internetu ale nic mi nepomohlo, pokaždé se mi do DB zapíše například pokud zapisuji znaky do formuláře ěščřžýáíé, do DB se zapíše ?&scaron;???&yacute;&aacute;&iacute;&eacute;, na webu se vypíše ?š???ýáíé.

Skript pro přidávání do DB ( je to jen testovací skript bez zabezpečení )
<?php
if(isset($_POST["OK"]))
{
    $text    =    $_POST["text"];
    mssql_query("INSERT INTO rod_news (text,podpis,datum) VALUES ('".$text."','".$_SESSION["user"]."','".time()."')");
    echo "Novinka byla přidána!";
}
?>
<form action="#" method="post">
    <textarea name="text"></textarea>
    <input type="submit" name="OK" value="Přidat novinku">
</form>

Děkuji moc za pomoc
xROAL
Profil
Skús všetky reťazce (minimálne tie, ktoré obsahujú diakritiku) vkladať ako N'string', a uisti sa, že dátový typ stĺpcov je nchar alebo nvarchar.
V tvojom prípade by teda dotaz vyzeral:
mssql_query("INSERT INTO rod_news (text,podpis,datum) VALUES (N'".$text."',N'".$_SESSION["user"]."','".time()."')");

Pokiaľ viem, rozšírenie mssql neumožňuje nejakým spôsobom riešiť kódovanie.

Ak náhodou robíš na Windowse a máš možnosť inštalovať softvér a zasahovať do konfigurácie PHP, použi radšej sqlsrv rozšírenie (myslím, že sa to dá dostať aj na Linux ale osobne som to viac neštudoval).
Zechy
Profil
Největší problém je, že sama o sobě MSSQL UTF8 neumí.

Nejjednodušší je používat sloupce nvarchar a ntext a do nich ukládat tak, že před uvozovky se přidá N prefix - Databáze to sebere jako, že se jedná o unicode zápis a měla by tak zachovat kodování, např.:
INSERT INTO (nvarchar_sloupec) VALUES(N'Hodnota');

Případně existuje ještě jedna cesta jak to obejít, ale to spíš, až když nezabere N prefix.

EDIT: Koukám, že xROAL mě předběhl :D

xROAL:
Pokiaľ viem, rozšírenie mssql neumožňuje nejakým spôsobom riešiť kódovanie.
Jde spíš o to, že MS SQL databáze neumí UTF-8 vůbec.
leorond
Profil
xROAL: Ano jedu na VPS ale nějak se v tom článku nevyznám

Pokud použiji N prefix tak dostanu do DB tento zápis 臎&scaron;膷艡啪&yacute;&aacute;&iacute;&eacute; a z DB vylezou opět otazníky.


Vyzkoušel jsem i metodu popsanou ZDE ale bezúspěšně, do DB se nic nezapíše.
leorond
Profil
Jo zase je to taková hloupost a to nastavení Collate.

Měl jsem nastaveno Czech_CI_AS a stačilo to změnit na Chinese_PRC a diakritika pomocí N prefix je 100%.

Děkuji všem
leorond
Profil
No tak ve finále jsem nastavil Collate na Chinese_PRC a když to vezmu kolem a kolem tak i bez N prefixu by to mělo spolehlivě fungovat.

A hádejte co, ono to funguje :D

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: