Autor Zpráva
Yuff.3
Profil
Ahojte,
V http://4funportal.eu/cs/4funprofil.php?uzivatel=1&page=steam&steam=csgo - vidno, v pravom stĺpci ako nedokáže prekódovať jazyk. Taktiež v kóde čo dávam nižšie vidno môj chabý pokus o prekódovanie jazyka. Predpokladám, že to bude treba nejak zmeniť a priamo zakomponovať do tej funkcie foreach, ale netuším ako, alebo som celkom mimo?

Prosím pomôžte mi :)
$jsonString7 = file_get_contents( "http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?appid=730&key=".$key."&steamid=".$steamID64."&l=czech&format=json");
    $data7 = json_decode($jsonString7, true);
    foreach($data7['playerstats']['achievements'] as $player7){
    echo "" .$player7['apiname'];
    echo " - splnený" .$player7['achieved'];
    echo "<br>";
    echo "" .$player7['name'];
    echo "<br>";
    $player7['name'] = mb_convert_encoding($str, "WIN-1252");
    echo "<br>";
    echo "" .$str;
    echo "<br>";
    echo "" .$player7['description'];
    echo "<br>";
    echo "<br>";
    }
Radek9
Profil
Yuff.3:
Za předpokladu, že defaultní kódování MB knihovny je UTF-8, by to mělo zhruba fungovat. Proč zhruba? Protože to převádíš do Windows-1252, přitom na stránce používáš Windows-1250. ;-) Další problém může nastat přímo při používání mb_convert_encoding, která mi vypisuje, že to kódování nezná. Jako nejspolehlivější způsob se mi zdá použít funkci iconv, přičemž můžeš rovnou překódovat ten výsledek funkce file_get_contents:

$jsonString = iconv("utf-8", "cp1250", file_get_contents(…));

Výsledný JSON (pokud kódování opravdu takto sedí) potom bude už převeden správně.
Yuff.3
Profil
Radek9:
$jsonString = iconv("utf-8", "cp1250", file_get_contents(…));
Dal som tento riadok za riadok foreach - teda za line 3 v prvom príspevku, ale nič mi to nespravilo.. Správa sa akoby tam nebol.
Radek9
Profil
Yuff.3:
No, protože tam je to úplně k ničemu. Proměnnou $jsonString7 (7 jsem vynechal) máš na prvním řádku. Jak jsem poznamenal, tohle provede nahrazení v celém JSONu, takže se potom už nepřevádí jednotlivé části. (Tzn. převod na řádku 9 je zbytečný.)
Yuff.3
Profil
Radek9:
na riadku 9 som ten prevod zmazal - samozrejme. Mám len pridané to čo si ty poslal na riadku 4. za foreach cyklom..


Resp. zmazal som riadky 12, 11, 10, 9 a pridal za riadok 3 čo si poslal..
Radek9
Profil
Yuff.3:
Tak znovu: Proměnnou $jsonString7 (7 jsem vynechal) máš na prvním řádku. Zkus hádat, kam ten řádek, co jsem ti poslal, máš dát… Napovím ti, že čtvrtý řádek to rozhodně není.
Yuff.3
Profil
Radek9:
Myslel som si, že sa tu snaží ľuďom pomáhať a nie ponižovať ich tým, že im budeš dokola opakovať, aby hádali kam majú aký riadok dopísať..
Vďaka za nevysvetlenie a je mi ťa úprimne ľúto.
Radek9
Profil
Yuff.3:
Vďaka za nevysvetlenie a je mi ťa úprimne ľúto.
Hodláš neustále provokovat? Spíše bych já měl litovat tebe. Ale nelituji, já tě naopak obdivuji. Osobně bych neměl žaludek takto žundrat, zneužívat lidskou dobrotu a ještě remcat, když ti někdo poradí.

aby hádali kam majú aký riadok dopísať..
Kde máš načítání dat? Na prvním řádku. Co jsem ti poslal já? Načítání dat, která jsou rovnou převedena do Windows-1250. Od druhého řádku už je pouze parsování dat a jejich zpracování. To už tě nemusí zajímat. Takže pouze volání file_get_contents navíc obalíš voláním iconv. Rozumíme si?
Yuff.3
Profil
Radek9:
Keď som s niečim neviem rady som odkázaný na to "žundrať" alebo niekoľko dní študovať veci, ktoré v živote využijem max raz. Volím preto ľahšiu cestu..
A vážim si, že sa nájdu ľudia, ktorí sú ochotní pomôcť, len ma však mrzí, že niektorí si popritom musia zdvíhať svoje ego..

Kľúčovým slovíčkom, ktoré mi stačilo napísať je, aby som to obalil. Avšak z nejakého dôvodu mi to nefunguje. Proste nevypíše mi teraz nič..


Ten prvý riadok som nahradil takto:
$jsonString7 = iconv("utf-8", "cp1250", file_get_contents( "http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?appid=730&key=".$key."&steamid=".$steamID64."&l=czech&format=json"));
Radek9
Profil
Yuff.3:
Já se radši už nebudu vyjadřovat k tvému vyjadřování. Jsem toho názoru, že i když to použiješ jednou v životě, ale nechceš za to platit, měl by ses to naučit.

Avšak z nejakého dôvodu mi to nefunguje. Proste nevypíše mi teraz nič..
Tak ukaž celý aktuální kód. Možná tam bude jen nějaký překlep. Případně i vzorová data, která vrací to API.
mapo
Profil *
Yuff.3:
Keď som s niečim neviem rady som odkázaný na to "žundrať" alebo niekoľko dní študovať veci, ktoré v živote využijem max raz. Volím preto ľahšiu cestu..
A vážim si, že sa nájdu ľudia, ktorí sú ochotní pomôcť, len ma však mrzí, že niektorí si popritom musia zdvíhať svoje ego..

Až na to, že ty rozhodně nehledáš pomoc, ale vyloženě rychlé anonymní pracanty, kteří pro tebe udělají nějakou práci jakmile si ji vymyslíš. Toto fórum je spíš o tom, že se tu pomáhá lidem učit se jak psát web! A jak už ti někdo v nějakém vlákně napsal, měl bys to hodit do kategorie práce a zakázek.
Yuff.3
Profil
Radek9, mapo:
Ono to vyznalo akoby to som chcel nakódovať nejaký jedinečný CMS systém podobný dokonalosti :D Chcem len jeden krátky jednoduchý kód. A keď sa stále odvolávate na Práce a Zákazky, koľko by ma takáto banalita ako je toto stála?? Mám v robote zobrať nejaká nadčasy? Alebo za ten čas čo budem zarábať na takýto "pre Vás" totálne primitívny kód sa to mám naozaj račej naučiť?
Vlastne nechápem o čo Vám stále ide.. Pokiaľ nemáte čas riešiť takéto moje "kraviny" načo to vôbec čítate a odpisujete? Ak chcete pomôcť, tak pomôžte, ak nie, tak prosím nemrhajte svojim a tak isto aj mojim časom.
ĎAKUJEM ;)

Celý kód ? Kód je ten istý čo v prvom príspevku, ibaže v prvom príspevku mi vypísal presne čo som chcel, ale nie tak ako som chcel - ten jazyk je jediný problém. Zmenil som akurát prvý riadok a ten som sem napísal. A taktiež
Yuff.3:
zmazal som riadky 12, 11, 10, 9

Nič viac som nespravil, nezmenil, a teda chyba je v tom aktuálnom, prvom riadku..
Radek9
Profil
Yuff.3:
Mám v robote zobrať nejaká nadčasy? Alebo za ten čas čo budem zarábať na takýto "pre Vás" totálne primitívny kód sa to mám naozaj račej naučiť?
Hele, zkusím se zeptat trochu jinak. Kdyby ti šéf v práci řekl, abys tam zůstal o hodinku déle, že potřebuje něco vyřešit, ale je to banalita a nic za to nedostaneš, zůstal bys tam?

načo to vôbec čítate a odpisujete?
Odepisujeme ti, protože ti chceme poradit. To je to, co tu děláme. Ale radíme ti jako začínajícímu programátorovi, který se chce něco učit. Nikoli jako člověku, co tomu vůbec nerozumí a chce to mít rychle za sebou.

Celý kód ?
Potom tě poprosím o ta vzorová data. (Co to vypíše, když to ručně zadáš do prohlížeče?)
Vypisuje to nějakou chybu?
Zkus si taky vypsat obsah té proměnné $jsonString7 třeba pomocí funkce var_dump. Vypíše to něco?
Yuff.3
Profil
Radek9:
:D :D To čo tu porovnávaš? Tebe snáď sa túto pomoc platia? Robíš to dobrovoľne. Ako som už vravel -
Yuff.3:
Ak chcete pomôcť, tak pomôžte, ak nie, tak prosím nemrhajte svojim a tak isto aj mojim časom.
Radek9:
Odepisujeme ti, protože ti chceme poradit.
V tom prípade som ti veľmi vďačný.
A nechcem to mať rýchlo za sebou, a nepovedal by som, že sa tomu vôbec nerozumiem. Niečo málo viem a niečo málo som ochotný sa priučiť, ale určite nechcem študovať nejakú zložitú funkciu celý hodiny/týždne nato aby som ju použil jeden krát a potom sa s ňou v živote nestretol. Som si istý, že to vieš pochopiť, určite sa ti v škole napr. na SJ/L stalo niečo podobné ;) :D


{
    "playerstats": {
        "steamID": "76561198024213103",
        "gameName": "Counter-Strike: Global Offensive",
        "achievements": [
            {
                "apiname": "WIN_BOMB_PLANT",
                "achieved": 1,
                "name": "Někdo nám tu položil bombu",
                "description": "Vyhraj kolo položením bomby"
            },
            {
                "apiname": "BOMB_PLANT_LOW",
                "achieved": 1,
                "name": "Boomala Boomala",
                "description": "Polož 100 bomb"
            },
            {
                "apiname": "BOMB_DEFUSE_LOW",
                "achieved": 1,
                "name": "Smrt nečeká nikde",
                "description": "Úspěšně zneškodni 100 bomb"
            },
            {
                "apiname": "KILL_ENEMY_LOW",
                "achieved": 1,
                "name": "Funebrák",
                "description": "Zabij 25 nepřátel"
            },
            {
                "apiname": "KILL_ENEMY_MED",
                "achieved": 1,
                "name": "Pan Kopfrkingl",
                "description": "Zabij 500 nepřátel"
            },
            {
                "apiname": "KILL_ENEMY_HIGH",
                "achieved": 1,
                "name": "Bůh války",
                "description": "Zabij 10 000 nepřátel"
            },
            {
                "apiname": "BOMB_DEFUSE_CLOSE_CALL",
                "achieved": 1,
                "name": "Na špičkové úrovni",
                "description": "Úspěšně zneškodni bombu, u které zbývalo méně než jedna sekunda do odpálení"
            },
            {
                "apiname": "KILL_BOMB_DEFUSER",
                "achieved": 1,
                "name": "Terorismus si rozvracet nedáme!",
                "description": "Zabij Counter-Teroristu, který právě zneškodňuje bombu"
            },
            {
                "apiname": "WIN_BOMB_DEFUSE",
                "achieved": 1,
                "name": "Obřad prvního zneškodnění",
                "description": "Vyhraj kolo zneškodněním bomby"
            },
            {
                "apiname": "BOMB_PLANT_IN_25_SECONDS",
                "achieved": 1,
                "name": "Krátká rozbuška",
                "description": "Polož bombu do 25 sekund (mimo mód Demolition)"
            },
            {
                "apiname": "WIN_ROUNDS_LOW",
                "achieved": 1,
                "name": "Newb-ý Světový Řád",
                "description": "Vyhraj deset kol"
            },
            {
                "apiname": "WIN_ROUNDS_MED",
                "achieved": 1,
                "name": "Pro-fesní růst",
                "description": "Vyhraj 200 kol"
            },
            {
                "apiname": "WIN_ROUNDS_HIGH",
                "achieved": 1,
                "name": "E-leet-ní bojovník",
                "description": "Vyhraj 5000 kol"
            },
            {
                "apiname": "GIVE_DAMAGE_LOW",
                "achieved": 1,
                "name": "Modří jsou bez bodů!",
                "description": "Způsob nepřátelům celkem 2 500 bodů poškození"
            },
            {
                "apiname": "GIVE_DAMAGE_MED",
                "achieved": 1,
                "name": "Vysvětlils to bod po bodu",
                "description": "Způsob nepřátelům celkem 50 000 bodů poškození"
            },
            {
                "apiname": "GIVE_DAMAGE_HIGH",
                "achieved": 1,
                "name": "Miliony bodů zkázy",
                "description": "Způsob nepřátelům celkem 1 000 000 bodů poškození"
            },
            {
                "apiname": "KILLING_SPREE",
                "achieved": 1,
                "name": "Zuřivec",
                "description": "V klasickém módu zabij čtyři nepřátelské hráče během patnácti sekund"
            },
            {
                "apiname": "KILL_WITH_OWN_GUN",
                "achieved": 1,
                "name": "Ztráty a nál3zy",
                "description": "Zabij nepřítele se zbraní, kterou v tomto kole upustil"
            },
            {
                "apiname": "RESCUE_HOSTAGES_LOW",
                "achieved": 1,
                "name": "Kovbojská diplomacie",
                "description": "Zachraň 100 rukojmích"
            },
            {
                "apiname": "RESCUE_HOSTAGES_MED",
                "achieved": 0,
                "name": "Car všech záchranářů",
                "description": "Zachraň 500 rukojmích"
            },
            {
                "apiname": "RESCUE_ALL_HOSTAGES",
                "achieved": 1,
                "name": "Dobrý pastýř",
                "description": "Zachraň všechny rukojmí v jednom kole"
            },
            {
                "apiname": "FAST_HOSTAGE_RESCUE",
                "achieved": 1,
                "name": "Spěšně vysvobozen",
                "description": "Zachraň všechny rukojmí do 90 sekund"
            },
            {
                "apiname": "KILL_TWO_WITH_ONE_SHOT",
                "achieved": 1,
                "name": "Úspora munice",
                "description": "Zabij dva nepřátelské hráče jednou kulkou"
            },
            {
                "apiname": "EARN_MONEY_LOW",
                "achieved": 1,
                "name": "Válečné dluhopisy",
                "description": "Vydělej celkem $50,000"
            },
            {
                "apiname": "EARN_MONEY_MED",
                "achieved": 1,
                "name": "Válečná kořist",
                "description": "Vydělej celkem $2,500,000"
            },
            {
                "apiname": "EARN_MONEY_HIGH",
                "achieved": 0,
                "name": "Krvavé peníze",
                "description": "Vydělej celkem $50,000,000"
            },
            {
                "apiname": "DEAD_GRENADE_KILL",
                "achieved": 1,
                "name": "Předčasné pohřbení",
                "description": "Zabij nepřítele granátem poté, co zemřeš"
            },
            {
                "apiname": "KILL_ENEMY_DEAGLE",
                "achieved": 1,
                "name": "Expert přes Desert Eagle",
                "description": "Zabij 200 nepřátel pomocí Desert Eaglu"
            },
            {
                "apiname": "KILL_ENEMY_GLOCK",
                "achieved": 1,
                "name": "Expert přes Glock-18",
                "description": "Zabij 100 nepřátel pomocí Glocku-18"
            },
            {
                "apiname": "KILL_ENEMY_ELITE",
                "achieved": 1,
                "name": "Expert přes
atď atď..
Takto to vypíše json - ten link v prvom riadku - keď ho zadám do prehliadača, samozrejme namiesto premenných dosadím potrebné záležitosti.
Toto je však tá zaujímavá časť, po prevedení do PHP polí (viď prvý príspevok) sa jazyk zmení a vypíše name a description v nejakom čudnom kódovaní..
Radek9
Profil
Yuff.3:
To čo tu porovnávaš?
S přístupem „nechci se to učit, napište mi to“ je to úplně to samé.

Tebe snáď sa túto pomoc platia?
Ano, běžně za podobné servisní úkony dostávám zaplaceno.

Aha, on je problém i v té funkci json_decode. Přijímá totiž pouze string v UTF-8 (tedy v tom původním nepřevedeném kódování). Převádět do správného kódování se musí až ty výsledné stringy. Bude to potom vypadat podobně, jak jsi to měl, ale s použitím funkce iconv namísto mb_convert_encoding:

    $jsonString7 = file_get_contents(…);
    $data7 = json_decode($jsonString7, true); // Tady se nechá originální string
    foreach($data7['playerstats']['achievements'] as $player7){
      $player7["name"] = iconv("utf-8", "cp1250", $player7["name"]); // Tady se to převede do Windows-1250
      …
    }

Místo name si samozřejmě dosadíš vlastní název (podle toho, co chceš převést) a ten řádek můžeš použít vícekrát na více hodnot.

Proč vlastně ten projekt píšeš ve Windows-1250? Jestli si na to najdeš čas, doporučoval bych to celé převést do UTF-8. Odpadnou potom všechny podobné jazykové problémy.
Yuff.3
Profil
Radek9:
Týmto debatu končím - Yuff.3:
Ak chcete pomôcť, tak pomôžte, ak nie, tak prosím nemrhajte svojim a tak isto aj mojim časom.

___________
Jasné, skvele, funguje to, som veľmi rád :) Moc krát ďakujem. Keby som mohol nejako pomôcť, stačí napísať :) Som ti zaviazaný. :)

(Ak sa nudíš kukni moju najnovšiu tému - fakt si neviem rady a dosť to spomaľuje web.. :(

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