Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

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

  • 4 odgovora
  • 4.915 pregleda

Najnovija ↓

Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a) 12.01.2004. u 18:55 · pre 277 meseci #1
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.
Re: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a) 12.01.2004. u 23:53 · pre 277 meseci #2
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..
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Re: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a) 13.01.2004. u 11:35 · pre 277 meseci #3
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);
}
?>
Potpis
Never trust an operating system you don't have sources for.
Re: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a) 13.01.2004. u 15:12 · pre 277 meseci #4
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...
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Re: Jos jedan post sa problem u vezi UTF-8... (Eksportovanje iz Excell-a) 13.01.2004. u 18:11 · pre 277 meseci #5
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;
}
?>
Potpis
Never trust an operating system you don't have sources for.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme