Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a)

[es] :: PHP :: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a)

[ Pregleda: 4012 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bujika

Član broj: 13400
Poruke: 60
*.dial.InfoSky.Net



Profil

icon Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a)12.01.2004. u 17:55 - pre 246 meseci
Pozdrav!

Mozda bi ovo pitanje trebalo da ide u MySQL forum, ali za sada da ga ostavimo ovde.

Imam MS Excell fajl, i sadrzaj tog fajla treba da upisem u MySQL databazu (verzija 3 neka). Problem je nastao upisivanjem nasih slova u bazu.

Ideja mi je bila da Excell-ov fajl snimim u HTML formatu, zatim da ga PHP skript ucita i "ocisti" od HTML tagova, a zatim da sadrzaj (po nekoj zavisnosti) upise u bazu. To sam i uradio, ali svuda gde su nasa slova, upise se npr. Č i slicno.

Primetio sam da ako u browseru prebacim na Encoding Western European (Windows), da mi se karakteri korektno prikazu.


Ima li neko resenje za ove probleme? Hvala unapred!

B.
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
195.252.85.*

Sajt: localhost


+5 Profil

icon Re: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a)12.01.2004. u 22:53 - pre 246 meseci
moraš da daš malo više informacija.

pvro, html nije bilo najsjajnije rešenje za tako nešto. možda bi bolje prošao sa CSVom?

drugo, očigledno je da excell tabela nije bila u UTF enkodingu već u Windows-1250 (ili koji već), pa moraš uraditi konvertovanje.

verovatno ti posao može završiti iconv iz PHPa, ali je verovatno prostije da "ručno" zameniš sva naša slova sa unicode ekvivalentima..

znači recimo napraviš tablicu konverzije, i odradiš:

Code:

str_replace('&#268', 'š', $string);
str_replace('&#269', 'Š', $string);
...


samo ne zaboravi da fajl sačuvaš u UTF-8 enkodingu..
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
212.200.88.*

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a)13.01.2004. u 10:35 - pre 246 meseci
Problem je nastao kod konverzije u HTML, tada su sva nasa slova konvertovana u HTML entites. Najbolje da ovo pretvoris u UTF-8, sto je relativno prosto, jer je format:
&#_char_code_;

tako da je:

Č = 268 = unicode char 010C = Č


Funkcija bi mogla da izgleda otprilike ovako:

Code:

<?php
$str = "&#269;&#263;&#353;&#273;";
print _konvertuj($str);

function _konvertuj($s)
{
    return preg_replace("/&#(\d{3|4});/e", 'pack("a*", $i)', $s);
}
?>

Never trust an operating system you don't have sources for.
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
195.252.85.*

Sajt: localhost


+5 Profil

icon Re: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a)13.01.2004. u 14:12 - pre 246 meseci
super ;)

a kako se ja nisam mogao setiti nečeg tako prostog i elegantnog? :-P


a inače, i ja sam prvo pomislio na htmlentities(), ali me čudi što bujika kaže da kada odabere Western encoding, sve bude ok.. po mojoj logici, to ne bi trebalo da se dešava...
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
212.200.88.*

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a)13.01.2004. u 17:11 - pre 246 meseci
Uf, malko sam se preracunao, jeste lepo, ali ne radi:-(
Ovo sam napisao malo napamet, pa sam zaboravio sam da se u &#263; itd nalaze unikod karakteri sto bas nije isto sto utf8 i da ih tek treba konvertovati u utf8.
Evo koda koji radi:
Code:

<?php
$str = "&#269;&#263;&#353;&#273;";
print _konvertuj($str);

function _konvertuj($s)
{
    return preg_replace("/&#(\d{2,4});/e", 'UnicodeToUtf8(\1)', $s);
}

function UnicodeToUtf8($char)
{
    if ($char < 128)
    {
        $result = chr($char);
    }
    elseif($char < 2048)
    {
        $result = chr(192 + (($char - ($char % 64)) / 64));
        $result .= chr(128 + ( $char % 64));
    }
    else
    {
        $result = chr(224 + (($char - ( $char % 4096)) / 4096));
        $result .= chr(128 + ((($char % 4096) - ($char % 64)) / 64));
        $result .= chr(128 + ($char % 64));
    }
    return $result;
}
?>

Never trust an operating system you don't have sources for.
 
Odgovor na temu

[es] :: PHP :: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a)

[ Pregleda: 4012 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.