ugrás a tartalomhoz

UTF8-ból ISO-8859-2 iconv nélkül

vtsoftware · 2009. Júl. 23. (Cs), 01.06
Sziasztok

Tudom elegetek van már ebből, el is hiszem, de én már megpróbáltam mindent amit tudtam, itt is szétnéztem, a G00gle-t végigtúrtam, a php.neten is böngészgettem, de sehogy sem jön össze.

Sajna utólag jöttem rá hogy ingyenes szerveren nincs iconv fv... nem nem engedik, egyszerűen nincs. Érdekes.

Nos, itthon a gépemen sikerült mindent szuperül megcsinálnom.
A lényeg hogy Ajax-al adom tovább egy form adatait.
A feldolgozás ugyan abban a fájlban történik, csak változókkal adom meg mi történjen...
Ha feldolgozásnál kiíratom a $_POST változókat simán' akkor látszik hogy UTF8-as kódolású.
Ha végigfuttatom rajta az utf8_decode fv.-t, akkor már jobb a helyzet, de az "ő" és "ű" betűk még mindig "?"-ként jelennek meg.
A probléma hogy iconv-al sikerült UTF8-ból ISO-8859-2-ra állítani a kódolást, de sajna az ugye nincsen...

Minden fájl ANSI kódolású, egyetlen UTF8-as sincs átnéztem vagy 100-szor. Áttérni UTF8-ra borzasztó nagy meló lenne mivel mindent ISO-ban csináltam, a MySQL-is latin2_general_ci... szóval ezt csak a legutolsó lehetőségként csinálnám meg.
Próbáltam az Ajax-ot állítani "
req.xmlHttpRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
"-vel és ISO-val is így sem jó.

Szóval a lényeg, hogy valaki tudna-e nekem ötletet adni hogy hol konvertálódik át a szöveg UTF8-ra? Én nem találok semmi "konvertálót" ami ezt csinálhatja.
Minden kész, de még evvel szívok...

Előre is köszönöm
 
1

mb_convert_encoding

Poetro · 2009. Júl. 23. (Cs), 01.18
2

Nem jó... sehol sem

vtsoftware · 2009. Júl. 23. (Cs), 02.26
Köszi, de sajnos ez sincs a tárhelyen, még a gépemen sem :)
A recode() fv. sem jó...
3

Mi van?

janoszen · 2009. Júl. 23. (Cs), 08.39
Akkor mid van? Mert ha nincs eszközöd, akkor maximum azzal próbálkozhatsz, hogy egy translate táblát valahonnan letöltesz és replacelsz. Egyébként ha magyar ékezetes karakterekre kell, akkor viszonylag véges a lista, szóval akár megírhatod saját magadnak is.
4

Magyar karakterekre

vbence · 2009. Júl. 23. (Cs), 09.55
Volt téma korábban... arra írtam:
http://vbence.web.elte.hu/utf8_latin2_iso8859_2_kovertalas.html
5

Elég érdekes...

vtsoftware · 2009. Júl. 23. (Cs), 11.55
Köszönöm, sikerült!
Ez az fv. bevált...
Viszont érdekes, mert így:
return str_replace(
  array("\xc3\xb6", "\xc3\xbc", "\xc3\xb3", "\xc5\x91", "\xc3\xba", "\xc3\xa9", "\xc3\xa1", "\xc5\xb1", "\xc3\xad", "\xc3\x96", "\xc3\x9c", "\xc3\x93", "\xc5\x90", "\xc3\x9a", "\xc3\x89", "\xc3\x81", "\xc5\xb0", "\xc3\x8d"),
  array("\xf6", "\xfc", "\xf3", "\xf5", "\xfa", "\xe9", "\xe1", "\xfb", "\xed", "\xd6", "\xdc", "\xd3", "\xd5", "\xda", "\xc9", "\xc1", "\xdb", "\xcd"),
  utf8_decode($text));
De a lényeg hogy sikerült, nagyon köszönöm...
6

Nem logikus

vbence · 2009. Júl. 23. (Cs), 12.35
Amit itt csinálsz az, hogy az utf8_decode függvénnyel (ami nem kezeli a hosszú ő, ű karaktereket rendesen) iso 8859-1 -et csinálsza szövegből, majd ebben kicseréled az UTF-8-cal kódolt karaktereket (amik amúgy sem lesznek benne).

Kérdés: mást eredményt kapsz, mint szimplán utf8_decode($text)-re? Az Ő Ű karaktereid ékezetei nem változnak hullámmá?
7

A tárhelyen igen...

vtsoftware · 2009. Júl. 23. (Cs), 20.36
Igen, tudom, de így működik a gépemen. A tárhelyen viszont simán utf8_decode nélkül működik. A gépen viszont kell hozzá... de még nincs kifirrva ez a dolog, még nekiállok bütykölnöm kell rajta... de rendesen.
8

Javascript utf8_to_latin2_hun

pockONE · 2012. Nov. 9. (P), 02.15
Hasonló problémába ütköztem, iso-8859-2 kódolású oldalon, json_encode -olt (utf8) tartalomnál az ékezetek szintén elszálltak.
Köszönöm a hasznos php fv-t, ez alapján csináltam belőle egy javascript fv-t.

//bemeneti szöveg változó
var textarea = 'A k\u00e9p nem tal\u00e1lhat\u00f3';

// karakterek konvertálása
textarea = utf8_to_latin2_hun(textarea);

// eredmény megjelenítése alert ablakban
alert(textarea);

/* Bemenet: UTF8 string
 * Kimenet: ISO-8859-2 latin2 magyar ékezetekkel
 * Source: http://vbence.web.elte.hu/utf8_latin2_iso8859_2_kovertalas.html
 */
function utf8_to_latin2_hun(str) {
	var replaceString = str;
	var find = ["\xc3\xb6", "\xc3\xbc", "\xc3\xb3", "\xc5\x91", "\xc3\xba", "\xc3\xa9", "\xc3\xa1", "\xc5\xb1", "\xc3\xad", "\xc3\x96", "\xc3\x9c", "\xc3\x93", "\xc5\x90", "\xc3\x9a", "\xc3\x89", "\xc3\x81", "\xc5\xb0", "\xc3\x8d"];
	var replace = ["\xf6", "\xfc", "\xf3", "\xf5", "\xfa", "\xe9", "\xe1", "\xfb", "\xed", "\xd6", "\xdc", "\xd3", "\xd5", "\xda", "\xc9", "\xc1", "\xdb", "\xcd"];

	for (var i = 0; i < find.length; i++) {
		replaceString = replaceString.replace(find[i], replace[i]);
  	}
return replaceString;
}

9

Minden?

Poetro · 2012. Nov. 9. (P), 10.01
És ez minden latin2-es karaktert helyesen kezel, vagy csak az általad kitaláltakat? Egyáltalán miért kell még ma is latin2-es kódolású oldalakat csinálni, miért nem lehet minden UTF-8?
10

Elképzelhető, hogy egy régi

Hidvégi Gábor · 2012. Nov. 9. (P), 10.39
Elképzelhető, hogy egy régi oldalon használja, ahol macerás lenne megváltoztatni. Egyébként tényleg nem szól mellette semmi.
11

Minden? 2. :)

T.G · 2012. Nov. 9. (P), 12.57
Arra figyelni kell, hogy ebben a formában csak az első előfordulást cseréli.

'aaa'.replace('a', 'b'); // baa
'aaa'.replace(/a/g, 'b'); // bbb