ugrás a tartalomhoz

html_entity_decode helyett

hirlapom · 2006. Aug. 10. (Cs), 02.04
Helló
Köv szeretném:

Egy teljesen randomra kódolt(ISO-8859-1(2),UTF-9,windows-1250) publikus XML-t leolvasok egy idegen serverről file_get_contents-el.
Aztán szeretném ezt az XML-t utf8-ba konvertálva Flashnek továbbadni.

Jelenleg egy primitív kódot használok erre:

<?php
if (mb_strpos($tartalom, "ISO-8859-1")!==false or mb_strpos($tartalom, "iso-8859-1")!==false) {
	$tartalom = iconv("ISO-8859-1", "UTF-8", $tartalom);
	$tartalom=urlencode($tartalom);
} else if (mb_strpos($tartalom, "ISO-8859-2")!==false or mb_strpos($tartalom, "iso-8859-2")!==false) {
	$tartalom = iconv("ISO-8859-2", "UTF-8", $tartalom);
	$tartalom=urlencode($tartalom);
} else if (mb_strpos($tartalom, "windows-1250")!==false) {
	$tartalom = iconv("windows-1250", "UTF-8", $tartalom);
	$tartalom=urlencode($tartalom);
} else {
//$tartalom=utf8_encode($tartalom);
	$tartalom=urlencode($tartalom);
	//$tartalom=utf8_encode($tartalom);
}
Ezzel tulajdonképpen a fejlécbeli jelölésre keresek rá, és annak megfelelően kódolok tovább.
Ami relytély számomra, hogy miért van szükség az urlencode-ra, mikor a szöveg már utf8-ban van, de csakis így működik a dolog, egyébként se kép se hang.
 
1

rejtély?

toxin · 2006. Aug. 10. (Cs), 07.51
NCRs, or Numeric Character References, and entities are ways of representing any Unicode character in XHTML / HTML using only ASCII characters. For example, the following are different ways of representing the character 'á':

&#xE1;
A hexadecimal NCR. NCRs are a type of escape. All NCRs begin with '&#' and end with ';'. The 'x' indicates that what follows is a hexadecimal number representing the scalar value of a Unicode character, ie. the number assigned in the Unicode code charts.

&#225;
A decimal NCR. This uses a decimal number to represent the same scalar value.


&aacute;
A character entity. This is a very different animal. All entities need to be predefined in the markup language definition (DTD), so this approach is only available for those characters that HTML 4.01 has specifically chosen to represent as entities. That includes only a small subset of the Unicode range. Note that the entity name is case sensitive: &Aacute; represents the uppercase letter 'Á'.



http://www.w3.org/International/tutorials/tutorial-char-enc/Overview.en.html
2

html_entity_decode?

Hojtsy Gábor · 2006. Aug. 10. (Cs), 13.29
Hogy jön a címbe a html_entity_decode()? Az urlencode() gondolom azért kell, mert a Flashnek úgy adod át, hogy ott loadVariables()-szel kérdezed le, az meg URL kódolt adatokat vár.

Ps. Szerettem volna valami konkrétabbra (érthetőbbre) módosítani a téma címet, ezért is jó lenne megtudni, hogy hogy jön ide a html_entity_decode().
3

jogos

hirlapom · 2006. Aug. 10. (Cs), 21.34
Szóval a lényeg, hogy bizonyos XML-ek esetében hiába kódolom át az üzenetet UTF-8-ba majd urlencode() után átküldöm a Flash-nek, a szövegben, ami átalakítok XML-lé Flashben benne maradnak az &#XXXX; formátumú karakterek, amiket természetesen nomális alakban szeretnék kijelezni.
A probléma, hogy ha az iconv átalakítás után html-entity_decode()-t használok, akkor vmiért sérül az XML és hiányosan jelzi ki.