Autor Zpráva
Racky
Profil *
Ahoj...

Řeším, proč se mi data z DB zobrazují jinak, než když je ručně napíšu do HTML..

Mám MS SQL 2000 a v něm text ve formátu ntext. (ntext = unicode) Nejsou tam jen české texty, ale i německé, bulharské a anglické. Když pomocí PHP tyhle data z DB dostanu ... (musím samozřejmě použít přetypování: CAST(msg AS TEXT) as msg, jinak to hlásí error) ... tak je chci vypsat.

Pokud v hlavičce HTML nemám uvedeno kódování, nebo tam je windows-1250, tak se čeština zobrazí dobře. Jakmile tam ale napíšu UTF-8, zobrazuje to rozsypaný čaj. Nepomáhají ani funkce utf8_decode, utf8_encode. Tím se mi naopak čeština jen přepíše na jiný rozsypaný čaj.

Myslim si, že pro mezinárodní web je nutné mít v hlavičce HTML nastaveno utf-8, proto to tlačím tímhle směrem, nicméně mi to nefunguje.

Na druhou stranu.. Když ručně vložím do HTML azbuku nebo české znaky, nastavím kódování HTML na utf-8 a soubor taky uložím jako utf-8, zobrazí se to dobře. Ale to co přijde z DB před PHP se zobrazí vždycky špatně..

Neměl by někdo nějakou radu pls?
Tori
Profil
Jaké kódování je nastavené u databáze/tabulek? A nemusí se i nastavovat kódování pro komunikaci s DB? (u MySQL ano, MSSQL neznám).

edit: a přetypování na NTEXT ? totiž TEXT zřejmě není Unicode.
__construct
Profil
Pokiaľ môžeš nejak zasiahnuť do konfigurácie serveru tak si nainštaluj poslednú verziu ovládača MSSQL pre PHP od Microsoftu a pozri si tento návod
Racky
Profil *
Tori:
Kódování se v MSSQL 2000 asi czech_ci_as. Co se týče přetypování na text, tak je nutné to provést, jinak PHP hlásí tuto chybu:
Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier
Tato chyba jde odstranit patrně jen přetypováním, jak jsem se dočetl na netu.
Nicméně chápu, že to může být přičina problému.

Konstruktor:
Dík za odkazy, kouknu a uvidím..
Racky
Profil *
Ještě dodávám, že ve finále nebudu používat čisté PHP (to jen teď, když hledám příčiny problému), ale využiju framework Yii. To pro úplnost.
Racky
Profil *
Constructor:
Tak jsem koukal na SQL driver, ale ten chce SQL Server 2005. Já jsem nucen používat SQL 2000. Takže to nejspíš nevyužiju.. Ale určitě dík za odkaz :)

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:

0