Autor Zpráva
suprman
Profil *
Mam taky problem... Mam urcity retazec ktory ma kodovanie Windows-1250. Vymyslel som si celkom jednuduchy system na prevadzanie kodovania z Window-1250 do vsetkych kodovani. Ide o to, ze ked chcem zapisat znak co ma umiestnenie v tabulke vecsie ako 128, teda ak je jeho ord() hodnota vecsia ako 128 bude sa prevadzat na HTML entitu. Napr. znak, ktory je v tabulke umiestneny ako 156 tak sa prevedie na œ

Toto je ten prekladac:



subor text.php (kodovanie je Windows-1250):
<?
header("Content-type: text/html;charset=Windows-1250");
$str = "ČĆč抌šśáú";
echo "document.write('";
for ($i=0;$i<strlen($str);$i++) {
if (ord($str{$i}) >= 128) {
echo "&#".ord($str{$i}).";";
}
else {
echo $str{$i};
}
}
echo "');";
?>



subor index.php (ine kodovanie):
<?
header("Content-type: text/html;charset=UTF-8");
?>
<script src="text.php" language="javascript" type="text/javascript"></script>


Funguje to tak, ze subor text.php vygeneruje retazec z nahradenymi znakmi a ten bude potom cez javascript zobrazeny v indexe, ktory ma ale nemusi mat ine kodovanie - nefunguje mi to ani ked ma index a text rovanke kodovanie (teda windows-1250).

Toto mi ale nefunguje na 100%. Nie vsetky znaky to prelozi spravne. V com je problem?


Vdaka
Peca
Profil
$str{$i};
Neměly by tam být hranaté závorky?
suprman
Profil *
nie...

Priklad:

$x = "abcdefghij";
echo $x{3}; // napise to "c"

Toto je vlastne to iste ako substr($x, 1, 3);
Peca
Profil
Problém bude v tom, že např. Č má #200, ale zapisuje se jako Č
A stejně si myslím, že by tam měly být hranaté závorky :-p
Toto téma je uzamčeno. Odpověď nelze zaslat.

0