ugrás a tartalomhoz

xls-ből xml fájl magyar ékezetekkel

Blackfriar · 2012. Aug. 1. (Sze), 19.39
Sziasztok !
Excel reader-rel beolvasok egy xls fájlt, amiben magyar ékezetes karakterek is vannak.
A beolvasott adatokat kiírom egy xml fájlba szabályos szerkezettel, viszont az ékezetekkel gondjaim vannak.
Valami ötlet ?
Előre is köszönöm a segítségeteket.
 
1

ötlet…

bbalint2 · 2012. Aug. 1. (Sze), 21.17
…a fejenállás, tigrisbukfenc és cigánykerekezés nekem mindig segíteni szokott, de:

egyik érdemes lehetőség:
használj az XML-ben is Kelet-európai kódolást (ISO8859-2)
<?xml version="1.0" encoding="ISO-8859-2"?>
és majd a feldolgozó részen akinek kell, az oda és úgy kódolja, ahogy' szeretné.

másik eshetőség:
konvertáld át UTF-8 kódolásúra az adatokat az iconv vagy mbstring kiterjesztések segítségével:

iconv('ISO-8859-2', 'UTF-8//TRANSLIT', $latin2adat);
mb_convert_encoding($latin2adat, 'UTF-8', 'ISO-8859-2');
tapasztalatból az iconv() a TRANSLIT opcióval/kapcsolóval okosabb állatka

ajánlott még a XML node-okon belül CDATA-ba tenni az adatokat ésakkor nem kell őket htmlspecialchars()-ni:

<?xml version="1.0" encoding="ISO-8859-2">
<termekek>
 <termek>
  <nev><![CDATA[
   ide írhatok bármilyen adatot, még <html>-t is és nem sértődik meg rá az XML feldolgozó…
  ]]></nev>
  <!-- stb. -->
 </termek>
</termekek>
2

kódolás

Poetro · 2012. Aug. 1. (Sze), 21.51
Meg kellene nézni, hogy az XLS fájl milyen kódolással kerül kiolvasásra, majd azt kell átalakítani UTF-8-ra. Ez valószínűleg eredetileg UTF-16LE ezért ennek megfelelően kell végezni az átkódolást.
3

hogyan

Blackfriar · 2012. Aug. 2. (Cs), 07.42
Az xls karakterkódolását hogyan lehet megállapítani ?
4

próbálkozás

Poetro · 2012. Aug. 2. (Cs), 08.28
Csinálhatsz egy próbát, azaz végigmész az iconv támogatott karakterkódolásain, és amelyikben jól néz ki a szöveg, azt használod. Vagy használod például az mb_detect_encoding függvényt, ami jó eséllyel megmondja a kódolást, de annak is fel kell sorolni hogy milyennel szeretnél próbálkozni, de nem működik UTF-16, UTF-32, UCS2 és UCS4 kódolások esetén a dokumentáció szerint.
5

előfordulhat

Blackfriar · 2012. Aug. 2. (Cs), 10.04
Most lehet, hogy hülyeséget kérdezek, de előfordulhat, hogy egy xls fájlon belüli két oszlop eltérő kódolású ?
6

Nem hinném

Poetro · 2012. Aug. 2. (Cs), 10.08
Nem hinném, de a MS-ből azért kinézek ilyet.
7

nagyjából

Blackfriar · 2012. Aug. 2. (Cs), 10.11
Mert nagyjából kezd jól kinézni a dolog, de az egyik oszlopban a "ő" nem stimmel.
8

És a többi oszlopban jó az ő

Poetro · 2012. Aug. 2. (Cs), 10.34
És a többi oszlopban jó az ő karakter?
9

nem

Blackfriar · 2012. Aug. 2. (Cs), 10.40
Most látom, hogy a többi oszlopban sem jó az ő.
11

ühüm

castaw · 2012. Aug. 23. (Cs), 19.57
Lehet, bizony, találkoztam már bizony ilyen szörnyeteggel. Egyik sor stimmelt, a következő nem.
Nálam is a már fentebb leírt megoldás működött, ISO-8859-2-ben olvastam be és iconv-val utf-8-ra kódoltatott. Ez nálam eddig még mindennel megbirkózott.
10

Látva eddigieket

Pepita · 2012. Aug. 3. (P), 00.38
Előrebocsátom: PHP oldalról még nem dolgoztam fel xls-t, tehát abban nemigen tudok segíteni.

Karakterkódolás: ha tudod, hogy milyen szoftverrel készül a dokumentum, akkor onnét érdemesebb elindulni, feltéve, ha egy vagy egymással azonos (beállítású) progiktól jön a cucc. Excel2002 esetén az Eszközök/Beállítások menü, Általános fül, webes beállítások gomb, Kódolás fül. Szerintem az egész fájl kódolása u.ez lesz, magyar progi (vagy windows) esetén alapértelmezetten windows-1250. Ezt nem tudom, fel tudja-e dolgozni az iconv(), de ha meg tudod oldani, akkor lehet, hogy érdemes(ebb) a fájlokat eleve utf-8-ban menteni. Persze az a tuti, ha a fájlból megtudod (programmal), de az nehezen fog menni (ha egyáltalán).