Portál AbcLinuxu, 12. května 2025 13:03

Dotaz: PHP UTF-8 CP1250 kódování

pepe_ avatar 19.8.2011 19:26 pepe_ | skóre: 48
PHP UTF-8 CP1250 kódování
Přečteno: 2196×
Odpovědět | Admin
Příloha:

Nekamenujte mne že tu řešim zavrhovanou věc jako je ICQ .

 

Mám PHP script který funguje jako boot . (připojí se na ICQ a čeká než mu někdo napíše a pak mu vrátí zpět to co mu někdo napsal) .

To mi funguje , ale ne s háčkama a čárkama (diakritiku to nebaští).

 

v *.php změňte  icq-cislo na vase a heslo na vase.

 

pak pustte boota a on ceka nez mu nekdo napise a potom text vypise na terminal a zaroven ho odesle zpet te strane ktera psala.

 

 

Poradite nekdo na to aby to behalo dobre cesky ?

 

Skoda ze to nejde cele v bashi misto php ktere je pro mne mene privetive.

 

Diky za rady , ale nejdrive to vyzkousejte nez budete placat vodu.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

moo avatar 19.8.2011 19:31 moo | skóre: 7 | Praha
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
Odpovědět | | Sbalit | Link | Blokovat | Admin
co je to boot? od slova ro-boot? :)) a co iconv? have you ever tried?
End the FED!
pepe_ avatar 19.8.2011 20:01 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování

Jo v bashi , v php mam co dělat napsat echo ...

20.8.2011 01:18 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
pepe_ avatar 20.8.2011 21:16 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování

Jo , ale jak do toho sahnu tak to prestane fungovat uplne , nejaky tip ?

pepe_ avatar 21.8.2011 15:03 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování

<?php
setlocale(LC_ALL, 'cs_CZ.UTF8');
ignore_user_abort(true);
set_time_limit(0);
require "icq-class.php";
$username='uzivatelske-cislo';
$password='uzivatelske-heslo';
$icq = new WebIcqLite();
if(!$icq->connect($username, $password))
{
die($icq->error);
}
while  ($message=$icq->read_message())
{
$od=$message['from'];
$text=$message['message'];
$zprava=iconv("cp1251", "UTF-8", $text);
echo "$od - po:'$zprava'   pred:'$text'\n";
$icq->write_message($od, ."po:".$zprava."    pred:".$text);
}
?>

Toto nedělá žádnou změnu ať si hraju s cp1251 iso8859-2 no prostě to nejde.

Našel někdo způsob kterej by vyhodil správný výsledek diakritiky?

pepe_ avatar 21.8.2011 15:14 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování

oprava radku  Vloudila se tecka navic pri vkladani na web

$icq->write_message($od, ."po:".$zprava."    pred:".$text);

nq

$icq->write_message($od, "po:".$zprava."    pred:".$text);

21.8.2011 15:23 Kit
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
Proč tam máš cp1251?
pepe_ avatar 21.8.2011 15:35 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování

protože sem skoušel iso8859-2 , cp1250 cp1251 ... ale nemá to žádnej vliv ať to prohazuju kde chci , a skončil sem u cp1251

 

proto sem uplně na začátku psal ať to lidi nejdřív vyzkouší protože tu bude 200 komentářů proč ale ať tam dam co chci je to stejné.

21.8.2011 15:58 Kit
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
Napsal jsi jenom, že české znaky ti nefungují. Nenapsal jsi, jak ti nefungují. Třeba co ti vyleze, když pošleš "příšerně žluťoučký kůň úpěl ďábelské ódy". Bezmyšlenkovité přehazování kódování nám nepomůže.

A té cp1251 se co nejrychleji zbav. Nechápu, proč to někdo ve svém programu trpí. cp1251 s námi totiž nemá nic společného.

pepe_ avatar 22.8.2011 13:12 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak to asi není kódováním ale uplně jiným formátem bo co ... Prostě čeština nefunguje (z icq zadam česky ale na konsoli ani zpátky se čeština s žádnou úpravou nevrátí).

Už mne nic nenapadá.

22.8.2011 13:17 Kit
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
Nepřijde nic nebo přijde zkomolený text? V tom je dost rozdíl.
pepe_ avatar 22.8.2011 22:36 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování

na příliš žluťoučký ...  nevrátí nic

na  ý á í é   nevrátí nic

na ž vrátí ?~

na ř vrátí ?Y

na č vrátí ?  a odřádkuje

na š vrátí ?a

na ě vrátí ??

 

ale nepřevádí to.

(22:31:25) vstup: ě
(22:31:26) výstup: po:?? pred:??

 

tak ?

23.8.2011 12:25 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
Zkusil bych kontrolovat věci samostatně. Téměř jistě je to v nějakých převodech kódování, ale v této chvíli není jasné, kdy, kde, co a jak provádí převody. Podezíral bych modul php pro komunikaci s icq. ten může dělat nějaké implicitní převody o kterých nic nepíše.

Nevím jak je těžké porozumět icq paketu, ale moje zkušenost je taková, že při síťových problémech je porozumění přenášeného paketu klíčové. V tomhle případě když odešleš písmeno, tak proběhne zpracování v odesílacím php, na icq serverech, v přijímacím php. v každém může být nějaký převod. Je třeba najít, co kdo převádí. A vnitřně díky možná jinému nastavení ty převody mohou být i nečeskou znakovou sadou.
24.8.2011 17:14 Kit
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
Mohl bys zkusit upravit skript tak, aby odpovědí nebylo prosté echo, ale hexdump. Tím se přestanou uplatňovat české výstupní filtry a vyleze z toho text, který jsi přijal. Z toho už snáze odvodíš použité znakové sady a konverze.
23.8.2011 13:26 sidik
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
Odpovědět | | Sbalit | Link | Blokovat | Admin
V jakém kódování máš script? Už se mi několikrát stalo, že jsem řešil problém s diakritikou v cizím scriptu a nakonec jsem zjistil, že hlavním problém je v tom, že script posílá v header() UTF-8 ale sám je psanej v ISO...
pepe_ avatar 24.8.2011 12:02 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování

Je to celé nahoře jako příloha.

v komentu je pak převod.

 

Systém je v utf-8 , debian.

pepe_ avatar 26.8.2011 12:50 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování

Nedá se to nějak debugovat aby se zjistilo kde je problém ?

26.8.2011 13:04 Viktor
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
26.8.2011 15:28 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování
Debugování ti psal Kit 24.9. a já 23.9. Nejde o to že ten kód v php je špatně, ale používáš funkce o který nevíš 100%, co skutečně dělají. Takže po každé tranformaci a volání funkce, výpis hexakódu co vstoupilo, co vystoupilo. A najít si tabulky kódování. A posílal bych to po jednotlivých kódech. Tedy třeba á v ISO-8859-2 poslat a odchytit příjem.

Podle tvého výpisu z 22.8. by se dalo odhadovat, že převod je do UTF-8 a pak je výsledek zpětně interpretován jako posloupnost bytů v ISO-8859-2.

Ve tvém výpisu ž se po převodu do UTF-8 převede na 0x17E, což v jsou dva byty a byte 0x01 nemá znakovou reprezentaci a asi proto tam je dán otazník a byte 0x7E je v ISO-8859-2 reprezentován ~. což odpovídá tomu co jsi dostal. Ostatní nemám chuť sledovat.

odkazy na tabulky jsou např.

http://doc.infosnel.nl/extreme_utf-8.html

http://en.wikipedia.org/wiki/ISO/IEC_8859-2

http://en.wikipedia.org/wiki/Windows-1251

A pokud to nepomůže, pochopit, co se jak převádí, tak ještě zařadit odchyt paketů. Protože do transformací znakových abeced by mohly přispívat i funkce write_message a read_message.

pepe_ avatar 26.8.2011 23:03 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: PHP UTF-8 CP1250 kódování

Děkuji , tohle již vypadá trochu srozumitelně popsaný problém. Doufám že nějak pokročím.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.