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 "
  1. 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:
  1. return str_replace(  
  2.   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"),  
  3.   array("\xf6""\xfc""\xf3""\xf5""\xfa""\xe9""\xe1""\xfb""\xed""\xd6""\xdc""\xd3""\xd5""\xda""\xc9""\xc1""\xdb""\xcd"),  
  4.   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.
  1. //bemeneti szöveg változó  
  2. var textarea = 'A k\u00e9p nem tal\u00e1lhat\u00f3';  
  3.   
  4. // karakterek konvertálása  
  5. textarea = utf8_to_latin2_hun(textarea);  
  6.   
  7. // eredmény megjelenítése alert ablakban  
  8. alert(textarea);  
  9.   
  10. /* Bemenet: UTF8 string 
  11.  * Kimenet: ISO-8859-2 latin2 magyar ékezetekkel 
  12.  * Source: http://vbence.web.elte.hu/utf8_latin2_iso8859_2_kovertalas.html 
  13.  */  
  14. function utf8_to_latin2_hun(str) {  
  15.     var replaceString = str;  
  16.     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"];  
  17.     var replace = ["\xf6""\xfc""\xf3""\xf5""\xfa""\xe9""\xe1""\xfb""\xed""\xd6""\xdc""\xd3""\xd5""\xda""\xc9""\xc1""\xdb""\xcd"];  
  18.   
  19.     for (var i = 0; i < find.length; i++) {  
  20.         replaceString = replaceString.replace(find[i], replace[i]);  
  21.     }  
  22. return replaceString;  
  23. }  
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.
  1. 'aaa'.replace('a''b'); // baa  
  2. 'aaa'.replace(/a/g, 'b'); // bbb