Reklama
Nepřihlášený uživatel | Zaregistrovat se
 

Téma:

Počítače a InternetVývoj software

Spravuje:

hkmaly

Může vás zajímat



Reklama


PHP


spolumoderuje harry_x

Prosíme o několik drobných laskavostí:

  • před položením dotazu zkuste zapátrat v dokumentaci. Nikomu se nebude chtít formulovat znova a znova tytéž odpovědi, které již dříve a mnohem lépe napsal někdo jiný.

    Konkrétně návod k instalaci PHP na sebeobskurnejsich platformach se nachází zde.

    Dalším užitečným zdrojem informací o PHP, PHPLIB, ale i spouste jinych veci mohou být stránky Jirky Koska.

    mnohe casti oficialniho manualu k PHP jsou jiz prelozeny do cestiny, zacit muzete zde

    Mnoho otázek k instalaci je zodpovězeno na této stránce.

    A v neposlední řadě se dá zkusit i vyhledávací formulář na této stránce (napravo od formuláře pro odesílání příspěvků).

  • Dodržujte prosím téma, kterým je výhradně programování v jazyce PHP.
    Pokud se kupříkladu Váš dotaz týká pouze databází, zkuste raději klub "SQL".
    Pokud se týká javascriptu, zkuste klub javascript.

  • nepokoušejte se zvýrazňovat své příspevky přebytečnými html značkami. kdyby to dělali všichni, výsledek by se nedal číst. proto budou graficky přespříliš kreativní příspěvky odmazávány.

  • Nadávání off-topic přispěvatelum přenechte moderátorovi klubu.

  • Pokud na Vaši otázku nikdo neodpovídá, nejspíše byla položena tak nešťastným zpusobem, ze na ni při nejlepší vuli nelze odpovědět. Druhá možnost je, že nikdo neví. Každopádně si nijak nepomůžete, budete-li se odpovědi domáhat jejím opakováním provázeným verbální agresivitou.

  • Pokud navzdory výše uvedenému opravdu myslite, ze sem musite neco napsat, zkuste ještě najít odpověď na váš dotaz na www.google.com

  • Tento klub není určen pro příspěvky typu "mám nové stránky v PHP, prosím otestujte mi je" - k tomu, aby člověk našel chybu v jakékoli aplikaci, nemusí být programátor. K podobným žádostem prosím použijte raději obecnější kluby jako www.

Bez výstrahy budou mazány příspěvky, jejichž autoři předchozí řádky očividně ignorovali.
Tato pravidla jsou šita na míru pokročilejším uživatelům, bez jejichž přítomnosti by vaše dotazy mnohdy zůstaly nezodpovězeny.

Připomínky k výše uvedenému akceptuji pouze prostřednictvím interní okouní pošty.

Poznámka: vzhledem k záplavě spamů byl anonymům zakázán zápis a asi to tak nějakou dobu vydrží.

Mesic PHP bugu sice uz dozuril, ale nalezene chyby jeste nebyly opraveny ...


korekce: latin1 za cp1250 - sorry vypadlo mi tam C
Ahoj,

s tímhle se setkávám celkem pravidelně, obvykle proto, že kódování v databázi nikdo neřešil, protože to nějak fungovalo a pak po sérii updatů, nebo migraci mysql se to celý rozsypalo.
Řešení spočívá v 2 krocích:
1) Přinutit mysql aby collate bylo nastaveno správně
2) V aplikaci vždy říct databázi v jakým kódování se s DB hodláš bavit

Ad 1: jde to udělat tak, že obsah databáze vyexportuješ (třeba přes mysqldump, případně nějaký klikadlo jako phpmyadmin, adminer…), potom v tom exportu nahradíš všechna latin1 za p1250 a nakonec to nahraj zpátky. Pokud bys to totiž udělal přes CHANGE COLLATE, tak ti mysql ty data překóduje a nejspíš skončíš s "h?cky a ?arky" už přímo v DB.

Ad 2: řeším to tak, že hned za connect volám exec('set names utf8') v případě té staré části aplikace tam přidej exec('set names cp1250'). Pak už nemusíš nic překódovávat a data bys měl dostávat v určené znakové sadě. Vhodné je také poznamenat, že aby správně fungovali funkce jako real_escape_string atd. je třeba nastavit kódování speciální funkcí. Pro mysqli je to metoda set_charset('utf8'), pro PDO musíš přidat k DSN 'charset=utf8'. ALE ne všech verzích PHP to funguje, set names je přitom naprosto spolehlivé.

Pokud nechceš zasahovat do zdrojáků, lze výchozí kódování nastavit i v php.ini, někdy také v my.ini.
spic už jen wtf 
má to zajímavý vedlejší efekt, že předtím se v pohodě načítalo s utf-8 připojením a teď musím iconvit
caracho - uzivatel nema blog -  :: hledam krtnika ::
jo, tohle jsem potkaval pri upgrade z nejake te mysql 4.0 (kterazto o charstech nemela ani paru) na novejsi a pak se to s tim tahlo...
spic už jen wtf 
(to bych začal do toho nového tahat staré a měl bych to podobně složité jako poslat data do starého)
spic už jen wtf 
díky ti! - jen to ï se změnilo na "i - to nevadí
hkmaly - Slava pomlcky -  .
Zkusil jsi pouzit pro db pripojeni latin1 a iconv('UTF-8', 'Windows-1250//TRANSLIT//IGNORE') ?
von_Zeppelin Oliheň Beznaděje  pclib php framework
To je laravel, co? No a co si udělat nějaký proxy objekt, který si udělá vlastní connection postaru přes mysql_connect a pošle to tam?
 
spic už jen wtf 
bohužel PDOException: SQLSTATE[42000]: Syntax error or access violation: 1115 Unknown character set: '' at .../Illuminate/Database/Connectors/MySqlConnector.php:37)
von_Zeppelin Oliheň Beznaděje  pclib php framework
To je taková ta situace, kdy je nominálně databáze v latin1_swedish, ale ve skutečnosti jsou tam data v cp1250? ...No ale stejně by to mělo jít, když se připojíš stejně jako ve staré, ne?
 
caracho - uzivatel nema blog -  :: hledam krtnika ::
tak se pripojuj taky bez charsetu a pred ulozenim udelej iconv do cp1250
spic už jen wtf 
neresi
caracho - uzivatel nema blog -  :: hledam krtnika ::
a ta stara patlanina se pripojuje k db jak? s charsetem cp1250, nebo latin1 nebo ho neresi?
spic už jen wtf 
napadá mě jedině udělat si ve staré aplikaci connector, který si to přečte v utf-8 (to není problém) a zapíše to do té **** db
spic už jen wtf 
mám tady takový problém:

  • stará patlanina ve Windows-1250 která ukládá data do tabulek s "CHARACTER SET latin1 COLLATE latin1_swedish_ci"

  • novější část aplikace v UTF-8, která komunikuje s API třetí strany a má něco uložit do této db

  • když novější část použije pro db připojení utf8//utf8_unicode_ci, stane se z "ďťňúůäëïöü ěščřžýáíé" "???ú?äëďöü ?š??žýáíé"

  • když novější část použije pro db připojení cp1250//cp1250_czech_cs a iconv('UTF-8', 'Windows-1250//TRANSLIT//IGNORE', stane se z "ďťňúůäëïöü ěščřžýáíé" "???ú?äë"iöü ?š??žýáíé"

Jak z toho ven?
 
spic už jen wtf 
nj, SAX
von_Zeppelin Oliheň Beznaděje  pclib php framework
Huh, to vypadá složitě. XMLReader jsem ještě nezkoušel. Popravdě, už jsem to udělal regulárním výrazem, ale byl jsem zvědav, jestli někde v těch mnoha rozhraních pro práci s xml, které má php, to nějak jednoduše půjde. Díky.
 
spic už jen wtf 
what about XMLReader->readString(); ?
pacmaga Nekvalitní zedník Ostrava  Jan Chvistek
Sorry, zle som prečítal, čo vlastne chceš.

$string = "<texts>
<text>Toto je <b>text</b></text>
<text>Toto je <b>další</b></text>
</texts>";

$x = simplexml_load_string($string);

foreach ($x->text as $t) {

foreach (dom_import_simplexml($t)->childNodes as $c)
{
echo $c->ownerDocument->saveXML($c);
}
}
von_Zeppelin Oliheň Beznaděje  pclib php framework
To by snad ziskalo je ten bold text, ne?