Volledige versie bekijken : [opgelost] php utf8 encode
Jordy
%Europe/Berlin %730 %2005, 18:32
Ik had de vraag al in dit (http://www.flashfocus.nl/forum/showthread.php?t=4659) topic gezet, maar dat wordt een beetje onoverzichtelijk. Daarom maak ik een apart topic hiervoor.
Ik laadt dus wat php variabele in flash. Maar nu is het zo dat flash de tekens zoals "+" en "%" niet weergeeft. Roenes vertelde mij dat het te maken heeft met utf8 encode.
Ik heb mn php script vervolgens aangepast maar vooralsnog geeft flash de tekens "+" en "%" niet weer. Terwijl php dit wel gewoon geeft in de output :).
$stringProduct = "&product".$i."=".$koekjes['naam'];
$stringIngredienten = "&ingredienten".$i."=".$koekjes['ingredienten'];
$stringVoedingswaarde = "&voedingswaarde".$i."=".$koekjes['voedingswaarde'];
echo utf8_encode($stringProduct);
echo utf8_encode($stringIngredienten);
echo utf8_encode($stringVoedingswaarde);
Laiverd
%Europe/Berlin %764 %2005, 19:20
Sommige tekens moet je URL encoden, en de oplossing voor het probleem dat je beschrijft is ook al eens vaker langsgekomen: http://www.flashfocus.nl/forum/showthread.php?t=4208
John
Jordy
%Europe/Berlin %316 %2005, 08:35
Oke dat is een handige thread, maar er staat nergens hoe je die encoding moet gebruiken. (ook niet in die link van Macromedia).
Of kijk ik ergens overheen ?
Jordy
%Europe/Berlin %308 %2005, 08:24
Iemand die me kan uitleggen hoe je die utf8 encoding in PHP gebruikt ? :)
In die links van Laiverd staat niet HOE je het toepast namelijk.
Roenes
%Europe/Berlin %736 %2005, 18:39
Ik zal morguh alsk tijd heb eens druk voor je op zoek gaan. Vandaag wordt iig niets want ik ben wat ziekjes..
Dus even geduld tot morguh maar misschien kan iemand anders ondertussen helpen :)
Jordy
%Europe/Berlin %784 %2005, 19:49
Ik heb zelf ook weer wat gevonden :). Mn php ziet er alsvolgt uit:
$stringProduct = "&product".$i."=".$koekjes['naam'];
$stringIngredienten = "&ingredienten".$i."=".$koekjes['ingredienten'];
$stringVoedingswaarde = "&voedingswaarde".$i."=".$koekjes['voedingswaarde'];
$stringProduct_utf8 = utf8_encode($stringProduct);
$stringIngredienten_utf8 = utf8_encode($stringIngrediente);
$stringVoedingswaarde_utf8 = utf8_encode ($stringVoedingswaarde);
$stringProduct_encoded =urlencode($stringProduct_utf8);
$stringIngredienten_encoded =urlencode($stringIngredienten_utf8);
$stringVoedingswaarde_encoded =urlencode( $stringVoedingswaarde_utf8);
echo $stringProduct_encoded;
echo $stringIngredienten_encoded;
echo $stringVoedingswaarde_encoded;
Nu krijg ik dus dit als output als ik de file via mn browser open:
&records=3%26product0%3Dmuesli%2B%26voedingswaarde0 %3D1%0D%0A2%0D%0A33333%0D%0A%0D%0A44%0D%0A45%0D%0A 55555%26
Dit kan flash niet uitlezen :) dus ik krijg nu niets te zien in flash.
Mijn andere output (dus zonder utf8 encode) ziet er zo uit:
&records=3&product0=muesli+&ingredienten0=Kokos &voedingswaarde0=1 2 33333 44 45 55555
en dit kan flash wel uitlezen (maar dan niet het + tekentje bij muesli ;) )
Laiverd
%Europe/Berlin %858 %2005, 21:35
Als eens gekeken naar de escape/unescape functies in as? Je kunt natuurlijk ook de karakters die je moet url-encoden via een string replace in PHP vervangen door hun url-encoded variant.
John
Jordy
%Europe/Berlin %862 %2005, 21:42
Ja,
maar daar heb ik nu toch weinig aan, flash leest dat hele "+" tekentje niet, kan ik m ook niet unescape. Of zit ik nu helemaal verkeerd :)
Laiverd
%Europe/Berlin %869 %2005, 21:52
unescape()
Availability
Flash Player 5.
Usage
unescape(x:String) : String
Parameters
x A string with hexadecimal sequences to escape.
Returns
A string decoded from a URL-encoded parameter.
Description
Function; evaluates the parameter x as a string, decodes the string from URL-encoded format (converting all hexadecimal sequences to ASCII characters), and returns the string.
Je kunt dus gewoon je eerste oplossing gebruiken lijkt me
Jordy
%Europe/Berlin %874 %2005, 21:59
met unescape(); doet ie het niet, echter als ik escape gebruik, dan krijg ik dit wel als output:
muesli%20
Dus dat is wel goed, maar ik krijg ipv die %20 geen + te zien :).
Jordy
%Europe/Berlin %655 %2005, 16:43
niemand die ooit met zon probleem te maken heeft gehad ? :)
Laiverd
%Europe/Berlin %691 %2005, 17:36
Hmm, even een testje gedaan met een tekstfile:
&records=3&product0=muesli%2B&ingredienten0=Kokos &voedingswaarde0=1 2Bs 33333 44 45 55555
In Flash:
var b = new LoadVars();
b.onLoad = function(){
for (i in this){
trace(i + " = " + this[i])
}
}
b.load("utf.txt"); // met utf8 encoding opgeslagen
De trace geeft:
voedingswaarde0 = 1 2Bs 33333 44 45 55555
ingredienten0 = Kokos
product0 = muesli+
records = 3
onLoad = [type Function]
Het lijkt erop alsof PHP iets mafs doet met het url_encoden van de '+'. Ik heb nl. het karakter %2B gebruikt , zoals ik het heb teruggevonden op http://www.macromedia.com/support/flash/ts/documents/url_encoding.htm. Ik denk dat je even naar een php-guru moet.
John
Laiverd
%Europe/Berlin %696 %2005, 17:42
Nog eens iets verder gekeken
In de tekstfile
&records=3%26product0%3Dmuesli%2B%26voedingswaarde0 %3D1%0D%0A2%0D%0A33333%0D%0A%0D%0A44%0D%0A45%0D%0A 55555%26
geeft een trace:
records = 3&product0=muesli+&voedingswaarde0 =1
2
33333
44
45
55555&
onLoad = [type Function]
De Flash player ziet nu dus de ampersandjes niet meer als separator tussen variabelen :@ Wellicht dat je hier wat aan kunt doen met de string functies, maar dat wordt wel een hassle. Volgens mij is er in de PHP iets niet okay (wellicht iets doms als dat de PHP file zelf UTF-8 encoded moet zijn opgeslagen ?). Nog steeds tijd voor een php guru lijkt me.
John
Jordy
%Europe/Berlin %701 %2005, 17:49
in ieder geval bedankt dat je hebt geholpen :P Ik ben ook nog steeds aan het google over dit probleem.... :D
Laiverd
%Europe/Berlin %713 %2005, 18:08
Het blijft fascinerend ;) Ik heb niet zo heel veel kaas gegeten van PHP, maar je encode nu de gehele string inclusief de variabele (&product bv.). Zou het niet handiger zijn om:
$stringProduct = "&product".$i."=".urlencode((utf8_encode($koekjes['naam']));
te doen? Dan ben in elk elk geval om het laatst door mij geconstateerde probleem heen.
John
Jordy
%Europe/Berlin %728 %2005, 18:28
woohoo Laiverd!! Jij was dus die PHP guru die me geholpen heeft met je laatste reactie :D Super bedankt. Kleine toevoeging op je php code ;) je bent een " ) " vergeten :D Eindelijk het werkt,
Echt super bedankt man
Laiverd
%Europe/Berlin %730 %2005, 18:32
Ach, zo heb ik ook weer wat bijgeleerd ;) Mooi dat het is opgelost.
John
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.