ugrás a tartalomhoz

Karakterkódolás javítás karaktercserékkel nem megy

Anonymous · 2006. Nov. 18. (Szo), 15.19
Egy olyan oldallal talalkoztam amiben vmiert nem megy rendesen a karakterkodolas es nekem kene vmiket modositanom rajta. Az alabbi szkriptet probaltam ki (adatbazisban a kod kene), de a csere nem hajtodik vegre. Mi a hiba?

$char=array("Ő","ő","Ű","ű");
$code=array("&#336","&#337","&#368","&#369");
$subj=preg_replace($char,$code,$subj); 
 
1

ez így elég kevés info..

Cadeyrn · 2006. Nov. 18. (Szo), 15.53
Üdv!

1. miben van kódolva a script?
2. miben van kódolva az oldal?
3. mit jelent a "csere nem hajtódik végre"? Kipróbáltad, hogy más dologgal megy-e?

Ezek után talán tudok mondani valamit, mert ilyennek én is szívtam.
2

a replace fg-re fogom butasagom

Anonymous · 2006. Nov. 18. (Szo), 16.17
csak a cseret probalgattam egy kulon kodban. ha a $subj="őz"; es a vegen kiratom akkor sem csereli ki. ugyanez vonatkozik az osszes tobbi cserelofuggvenyre. ugy vettem eszre, hogy a nem ekezetes betuket megtalalja. vmi megoldas, hogy ezeket is kicserelje?
3

nem csoda, hogy nem megy

Hojtsy Gábor · 2006. Nov. 18. (Szo), 16.19
A preg_replace() delimiter karaktereket vár a minta (első paraméter) elején és végén. Lásd a példákat a PHP kézikönyvben a használatáról. Egyébként adott esetben az str_replace() nagyon szépen használható, nem kell ágyúval verébre lőni.
4

str_replace()

Anonymous · 2006. Nov. 18. (Szo), 16.25
a fenti fg-el probaltam eloszor, a preg_replace-t csak utana probaltam
6

Ne nézd a neveket

randomly · 2006. Nov. 18. (Szo), 20.54
Szia!

A függvény neveit ne nézd teljes buták.
De amire nekem kell müködik és nem akarom bántani a motort.
<?php
function urlencodeunicode($text) {
   $unicodechars=array(
	"%u0151",	// ő
	"%u0150",	// Ő
	"%u0171",	// ű
	"%u0170",	// Ű
	"%u00e1",	// á
	"%u00c1",	// Á
   );
   $chars=array(
	"ő",
	"Ő",
	"ű",
	"Ű",
	"á",
	"Á",
   );
   $text=str_replace($unicodechars,$chars,$text);
  return($text);
}
?>
rand
5

karaktercsere

Anonymous · 2006. Nov. 18. (Szo), 18.29
nekem egy sokkal egyszerűbb módon megy az ilyen:
egy switch szerkezetben egyenként végig vizsgálja az általam megírt betukonver() függvény az input szöveget, és cserélget. Bár költséges algoritmus, 100% működik. A PHP függvények nem mindig tökéletesek!
9

Anonymous · 2006. Nov. 19. (V), 17.46
ha
7

próba

Nigi · 2006. Nov. 18. (Szo), 23.07
Én is kipróbáltam, de pl $a=strpos($nev,"ő"); nem kapja meg az "ő" betűt. Mi lehet a hiba? Most már engem is érdekel...
8

multibyte?

sotetbarna · 2006. Nov. 19. (V), 00.23
ha van mbstring kiterjesztés, akkor érdemes kipróbálni:

$subj = mb_convert_encoding($subj, 'HTML-ENTITIES', 'ISO-8859-2');
vagy

$subj = mb_convert_encoding($subj, 'HTML-ENTITIES', 'UTF-8');
(nemtom milyen karakterkódolást használsz...)

mb_convert_encoding manual itt

de ha a gyökerekhez akarunk visszatérni, hogy nem megy a karakterkódolás, akkor egész sokféle oka lehet:
- milyen header-t küldesz php-ből a böngészőnek?
- milyen headert küld a webszerver (apache)?
- valójában milyen kódolásban kapja a böngésző az adatokat?
- milyen charset van beállítva a html-ben meta tag-nek?
- az adatok az adatbázisban hogyan vanak kódolva?
- megfelelő függvényeket használsz-e a stringek kezelésénél (pl. substr nem biztos, hogy a várt eredményt adja UTF-8-as kódolásnál)?
- használsz-e javascriptet az adatátvitelnél, vagy milyen kódolással küldi vissza a böngésző az adatokat (ajax vagy bármilyen kódolás)?

szóval ezeket szépen le kell ellenőrizni és beállítani...