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

problem sa konverzijom

[es] :: PHP :: problem sa konverzijom

[ Pregleda: 2552 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jelena_t
Jelena Tadin
php programer
Beograd

Član broj: 178017
Poruke: 55
79.101.160.*



Profil

icon problem sa konverzijom07.07.2008. u 11:02 - pre 192 meseci
Ovako: potrebno mi je da u bazi drzim neke non-latin stringove (ruski jezik npr) upisane kao utf-16 tj dva bajta po karakteru, kada ih ubacim u bazu kroz php formu, i promenljivu koju upisujem konvertujem u utf-16, trebalo bi da mi vrati da je encoding utf-16, medjutim :

mb_convert_encoding($username,"utf-16"); konvertujem u utf-16
ali, kad pozovem
mb_detect_encoding($username); on mi vraca da je encoding utf-8

Help
 
Odgovor na temu

jelena_t
Jelena Tadin
php programer
Beograd

Član broj: 178017
Poruke: 55
79.101.160.*



Profil

icon Re: problem sa konverzijom07.07.2008. u 11:09 - pre 192 meseci
Zaboravih da dodam, baza je Pervasive v8 mada mislim da to nema veze sa ovim problemom jer on mi izbacuje i pogresni encoding i kad samo odstampam na ekranu promenljivu pre i posle...
 
Odgovor na temu

jelena_t
Jelena Tadin
php programer
Beograd

Član broj: 178017
Poruke: 55
79.101.160.*



Profil

icon Re: problem sa konverzijom07.07.2008. u 11:20 - pre 192 meseci
Ok, shvatila sam u cemu je problem ..mb_convert_encoding ne radi sa utf-16, moze da konvertuje recimo u utf-8, jis i slicno ali nece u utf-16.. :(
 
Odgovor na temu

dr ZiDoo
Banja Luka

Član broj: 189
Poruke: 1728
*.broadband.blic.net.

Jabber: ZiDoo@elitesecurity.org
ICQ: 299539598
Sajt: zidoo.geek.rs.ba


Profil

icon Re: problem sa konverzijom07.07.2008. u 11:41 - pre 192 meseci
iconv?
tu nema kašike....
 
Odgovor na temu

jelena_t
Jelena Tadin
php programer
Beograd

Član broj: 178017
Poruke: 55
79.101.160.*



Profil

icon Re: problem sa konverzijom07.07.2008. u 11:56 - pre 192 meseci
I iconv me zeza takodje...npr $us=iconv( mb_detect_encoding($us),'UTF-16',$us); ostaje isti enociding koji vec ima ta promenljuva $us... ne menja ga u utf-16
 
Odgovor na temu

jelena_t
Jelena Tadin
php programer
Beograd

Član broj: 178017
Poruke: 55
79.101.160.*



Profil

icon Re: problem sa konverzijom07.07.2008. u 12:31 - pre 192 meseci
Sad sam tek u konfuziji..izgleda nisam bila u pravu uopste, mb_convert_encoding radi sa utf-16, ali nesto definitivno nije u redu, evo sta sam probavala:


$username='oficialь';

$username=mb_convert_encoding($username,'UTF-16',mb_detect_encoding($username));

echo' Posle konverzije :';
echo mb_detect_encoding($username);
echo $username;


vrati: da je i pre i posle konverzije encoding utf-8 medjutim umesto oficialь vrati da je username:D8F80;L

Pomoc? :(
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.beotel.net.



+19 Profil

icon Re: problem sa konverzijom07.07.2008. u 12:41 - pre 192 meseci
Ovo sam negde iskopao, ne sećam se više gde, a nije ni isprobano.
Dve funkcije za konverziju 1 karaktera između utf8 i uft16.

Code:
    
    function utf82utf16($utf8) {
        // Konvertuje UTF8 u UTF16
        if(function_exists('mb_convert_encoding')) {
            return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
        }
        // sporija zamena za mb_convert_encoding 
        switch(strlen($utf8)) {
            case 1:
                // this case should never be reached, because we are in ASCII range
                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                return $utf8;
            case 2:
                // return a UTF-16 character from a 2-byte UTF-8 char
                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                return chr(0x07 & (ord($utf8{0}) >> 2))
                     . chr((0xC0 & (ord($utf8{0}) << 6))
                         | (0x3F & ord($utf8{1})));
            case 3:
                // return a UTF-16 character from a 3-byte UTF-8 char
                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                return chr((0xF0 & (ord($utf8{0}) << 4))
                         | (0x0F & (ord($utf8{1}) >> 2)))
                     . chr((0xC0 & (ord($utf8{1}) << 6))
                         | (0x7F & ord($utf8{2})));
        }
        // ignoring UTF-32 for now, sorry
        return '';
    }



    function utf162utf8($utf16) {
        // konvertuje UTF16 u UTF8
        if(function_exists('mb_convert_encoding')) {
            return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
        }
        // sporija zamena za mb_convert_encoding 
        $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
        switch(true) {
            case ((0x7F & $bytes) == $bytes):
                // this case should never be reached, because we are in ASCII range
                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                return chr(0x7F & $bytes);

            case (0x07FF & $bytes) == $bytes:
                // return a 2-byte UTF-8 character
                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                return chr(0xC0 | (($bytes >> 6) & 0x1F))
                     . chr(0x80 | ($bytes & 0x3F));

            case (0xFFFF & $bytes) == $bytes:
                // return a 3-byte UTF-8 character
                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
                return chr(0xE0 | (($bytes >> 12) & 0x0F))
                     . chr(0x80 | (($bytes >> 6) & 0x3F))
                     . chr(0x80 | ($bytes & 0x3F));
        }
        // ignoring UTF-32 for now, sorry
        return '';
    }



"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

jelena_t
Jelena Tadin
php programer
Beograd

Član broj: 178017
Poruke: 55
79.101.160.*



Profil

icon Re: problem sa konverzijom07.07.2008. u 13:47 - pre 192 meseci
Ok, hvala...u mom slucaju se uvek izvrsi mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); posto je ispunjen taj if uslov
Sad sam proverila, on stvarno konvertuje u utf-16, recimo string 'ana' (promenim drugi parametar iz utf-8 u mb_detect_encoding($utf8)) posle konverzije je 6 bajtova.. doduse i dalje nece da mi ga ubaci u bazu..
 
Odgovor na temu

[es] :: PHP :: problem sa konverzijom

[ Pregleda: 2552 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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