Novo

Forum kao aplikacija na telefonu

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

  • 30 odgovora
  • 9.601 pregleda

Najnovija ↓

Re: Izgubljen u encodingu... 16.09.2010. u 09:19 · pre 196 meseci #21
Jesi ovako mislio?
Nista se nije promjenilo.

Code:
mysql> desc vesti;
+-----------+----------+------+-----+---------+-------+
| Field     | Type     | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| id        | int(11)  |      |     | 0       |       |
| datum     | date     | YES  |     | NULL    |       |
| naslov    | tinyblob | YES  |     | NULL    |       |
| uvod      | blob     | YES  |     | NULL    |       |
| vest      | blob     | YES  |     | NULL    |       |
| thumbnail | tinyblob | YES  |     | NULL    |       |
+-----------+----------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql> select hex(naslov) from vesti limit 1;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| hex(naslov)                                                                                                                                                                            |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| D0A0D095D097D0A3D09BD0A2D090D0A2D09820D09AD09ED09DD09AD0A3D0A0D0A1D09020323030332E20D093D09ED094D098D09DD095202D2022D09FD09BD090D09DD098D09DD09020D09820D097D094D0A0D090D092D089D09522 |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select naslov from vesti limit 1;
+---------------------------------------------------------------------------------------------+
| naslov                                                                                      |
+---------------------------------------------------------------------------------------------+
| Ð ÐÐУÐТÐТРÐÐÐÐУРСР2003. ÐÐÐÐÐР- "ÐÐÐÐÐÐРРÐÐРÐÐÐÐ" |
+---------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter table vesti change naslov naslov varchar(150) character set utf8 default NULL;
Query OK, 132 rows affected (0.02 sec)
Records: 132  Duplicates: 0  Warnings: 0

mysql> select hex(naslov) from vesti limit 1;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| hex(naslov)                                                                                                                                                                            |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| D0A0D095D097D0A3D09BD0A2D090D0A2D09820D09AD09ED09DD09AD0A3D0A0D0A1D09020323030332E20D093D09ED094D098D09DD095202D2022D09FD09BD090D09DD098D09DD09020D09820D097D094D0A0D090D092D089D09522 |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> desc vesti;
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id        | int(11)      |      |     | 0       |       |
| datum     | date         | YES  |     | NULL    |       |
| naslov    | varchar(150) | YES  |     | NULL    |       |
| uvod      | blob         | YES  |     | NULL    |       |
| vest      | blob         | YES  |     | NULL    |       |
| thumbnail | tinyblob     | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: Izgubljen u encodingu... 16.09.2010. u 09:36 · pre 196 meseci #22
da tako, nesto nije u redu ...

ako je HEX() bloba

D0A0D095D097D0A3D09BD0A2D090D0A2D09820D09AD09ED09DD09AD0A3D0A0D0A1D09020323030332E20D093D09ED094D098D09DD095202D2022D09FD09BD090D09DD098D09DD09020D09820D097D094D0A0D090D092D089D09522

i kada ga prebacis u UTF8 ostane:

D0A0D095D097D0A3D09BD0A2D090D0A2D09820D09AD09ED09DD09AD0A3D0A0D0A1D09020323030332E20D093D09ED094D098D09DD095202D2022D09FD09BD090D09DD098D09DD09020D09820D097D094D0A0D090D092D089D09522

to znaci da je "validan" ... tj, ako se ja dobro secam, da nije mysql bi trebalo da kuka ... mada to je uvek "pitanje" ...

kada iz PHP-a uradis "SET NAMES 'UTF8'; SELECT naslov FROM vesti;" i spucas to direkt browseru kome je enkoding utf8 sta ti prikaze browser u jednom a sta u drugom slucaju?

koji bese mysql tu kod tebe moram da proverim nesto, ne secam se vise kako se ponasa ova konverzija sa "pogresnim" enkodingom
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Izgubljen u encodingu... 16.09.2010. u 09:51 · pre 196 meseci #23
nesto ti tu nije ok .. pazi ovako, kada taj hex ubacis u fajl:

Code:

<?php
$x = 'D0A0D095D097D0A3D09BD0A2D090D0A2D09820D09AD09ED09DD09AD0A3D0A0D0A1D09020323030332E20D093D09ED094D098D09DD095202D2022D09FD09BD090D09DD098D09DD09020D09820D097D094D0A0D090D092D089D09522';

$t = '';

$f = fopen("kita.txt", "w") or die("greska");

for ($i=0;$i<strlen($x);$i+=2){
  $p = hexdec( substr($x,$i,2));
  fwrite($f,  chr($p));  
  $t .= chr($p);
}
fclose($f);

if (is_validUTF8($t)){
  echo 'validan utf8 string:' . $t . "\n";
} else {
  echo "nije validan string\n";
}


function is_validUTF8($str) //http://php.net/manual/en/function.utf8-encode.php
{
    // values of -1 represent disalloweded values for the first bytes in current UTF-8
    static $trailing_bytes = array (
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
        -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
        -1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
    );

    $ups = unpack('C*', $str);
    if (!($aCnt = count($ups))) return true; // Empty string *is* valid UTF-8
    for ($i = 1; $i <= $aCnt;)
    {
        if (!($tbytes = $trailing_bytes[($b1 = $ups[$i++])])) continue;
        if ($tbytes == -1) return false;
       
        $first = true;
        while ($tbytes > 0 && $i <= $aCnt)
        {
            $cbyte = $ups[$i++];
            if (($cbyte & 0xC0) != 0x80) return false;
           
            if ($first)
            {
                switch ($b1)
                {
                    case 0xE0:
                        if ($cbyte < 0xA0) return false;
                        break;
                    case 0xED:
                        if ($cbyte > 0x9F) return false;
                        break;
                    case 0xF0:
                        if ($cbyte < 0x90) return false;
                        break;
                    case 0xF4:
                        if ($cbyte > 0x8F) return false;
                        break;
                    default:
                        break;
                }
                $first = false;
            }
            $tbytes--;
        }
        if ($tbytes) return false; // incomplete sequence at EOS
    }       
    return true;
}

?>


fajl bude validan utf8 cirilica (REZULTATI KONKURSA 2003. GODINE - "PLANINA I ZDRAVLjE") i ova funkcija koja proverava validnost potvrdi da je string validan .... tako da bice da imas negde gresku kod sebe

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Izgubljen u encodingu... 16.09.2010. u 11:16 · pre 196 meseci #24
Radi sa set names utf8....
Provjericu kasnije, mislim da to ima veze sa verzijom php-a i mysql klijenta sa kojim je kompajliran isti, jer na novijim serverima imam iste slucajeve ali nije potrebno eksplicitno set names utf8.
Ovdje je u pitanju php 4.4.7 i mysql 4.1.22.

Imacu jos jedno pitanje kasnije i mislim da je to to :)
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: Izgubljen u encodingu... 16.09.2010. u 11:19 · pre 196 meseci #25
pazi, 4.1 nije najsrecnije resenje sa enkodingom, tu je prvi put dodata podrska ...

UVEK iz PHP-a radi set names inace php prica sa bazom kao latin1, samo slucajno mozes da naletis na php konektor koji prica utf8, dakle kad ne stavis set names generises smece
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Izgubljen u encodingu... 16.09.2010. u 14:24 · pre 196 meseci #26
Evo, imam sad situaciju gdje hex nije isti nakon konverzije

Ovo je prije konverzije
Code:

613A343A7B733A353A227374796C65223B733A313A2231223B733A31343A22646973706C617977616974696E67223B733A313A2231223B733A31343A22646973706C61796D6F64756C6573223B693A303B733A373A22636F6E74656E74223B733A313039353A22696E6465782E7068707C506FE86574616B7C506F76726174616B206E61206F736E6F766E7520737472616E6963752E2E2E4C494E4553504C4954757365722E7068707C4D6F6A206E616C6F677C41646D696E697374726163696A61206C69E86E6F67206E616C6F67612E2E2E4C494E4553504C49545B4D657373616765735D7C5072697661746E6520706F72756B657C5072697661746E6520706F72756B652064727567696D20E86C616E6F76696D61206F766F672073616A74612E2E2E4C494E4553504C495461646D696E2E7068707C41646D696E697374726163696A617C41646D696E697374726163696A612073616A74612E2E2E4C494E4553504C4954757365722E7068703F6D6F64756C653D55736572266F703D6C6F676F75747C4F646A6176617C4F646A6176612E2E2E4C494E4553504C49547C7C4C494E4553504C49547372735F666F72756D7C466F72756D7C466F72756D20536176657A612E2E2E4C494E4553504C49545B546F706963735D7C54656D657C53706973616B206E6F766968206E61736C6F7661206E61206F766F6D2073616A74752E2E2E4C494E4553504C49545B53656374696F6E735D7C53656B63696A657C4F7374616C6920736164729E616A69206F766F672073616A74612E2E2E4C494E4553504C49545B4E6577735D7C56657374697C506F736C65646E6A65207665737469206E612073616A74752E2E2E4C494E4553504C49545B5375626D69745F4E6577735D7C506F9A616C6A6920E86C616E616B7C506F9A616C6A6920E86C616E616B20696C6920766573742E2E2E4C494E4553504C49545B4641515D7C506974616E6A617CC86573746F20706F737461766C6A616E6120706974616E6A612E2E2E4C494E4553504C49545B5365617263685D7C5472619E697C5072657472619E6976616E6A65206F766F672073616A74612E2E2E4C494E4553504C49545B446F776E6C6F6164735D7C446F776E6C6F6164737C46616A6C6F7669207A6120707265757A696D616E6A652E2E2E4C494E4553504C49545B5765625F4C696E6B735D7C576562206C696E6B6F76697C4C696E6B6F7669206B612064727567696D2073616A746F76696D612E2E2E4C494E4553504C49545B53746174735D7C53746174697374696B617C53746174697374696B61206F2073616A74754C494E4553504C49545B4D656D626572735F4C6973745D7C4C6973746120E86C616E6F76617C4C6973746120726567697374726F76616E696820E86C616E6F76612073616A74612E2E2E4C494E4553504C49545B5265636F6D6D656E645F55735D7C507265706F7275E8697465206E61737C507265706F7275E8697465206F76616A2073616A742064727567696D612E2E2E4C494E4553504C4954696E6465782E7068703F6E616D653D53656374696F6E73267265713D7669657761727469636C652661727469643D32347C3C623E4B6F6E74616B743C2F623E7C535253202D206B6F6E74616B7420696E666F726D6163696A65223B7D


Onda uradim
alter table t1 change content content text character set utf8 NOT NULL default '';

i nakon toga hex je
Code:

613A343A7B733A353A227374796C65223B733A313A2231223B733A31343A22646973706C617977616974696E67223B733A313A2231223B733A31343A22646973706C61796D6F64756C6573223B693A303B733A373A22636F6E74656E74223B733A313039353A22696E6465782E7068707C506F

Sta se tu desi?

Da li bih imao nekih problema ako bi ostavio sva ova polja u blob formatu?
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: Izgubljen u encodingu... 16.09.2010. u 18:41 · pre 196 meseci #27
desi se to da u blobu nije validan utf8 string i kada naidje na prvi nevalidan karakter mysql izignorise ostatak ...

ako pustis taj string kroz onaj php primer koji proverava validnost videces da ce da vrati da string nije validan.

sto se tice toga da ih ostavis kao blob, nemas pretragu po tim poljima onda, nemas ideju "sta je unutra"
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Izgubljen u encodingu... 17.09.2010. u 11:32 · pre 196 meseci #28
A mogu li to kako da popravim, taj string?
Sta da radim onda sa ovim.. mora da ostane na staroj bazi?? ufff
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: Izgubljen u encodingu... 17.09.2010. u 17:48 · pre 196 meseci #29
paaaaaaa .. ako ga vidis na web-u kako treba, copy sa web-a utf string pa paste ce odraditi posao ... rucno da ga popravljas - imas taj source u php-u koji testira string pa mozes da vidis uz pomoc njega tacno gde ti je problem..

sta da radis - proveris koliko imas takvih entrija koji su "razliciti" ... i ako nema previse, ispravis ih "na misice" ...

ima isto fora koja je meni uspela nekoliko puta

uradis mysqldump u fajl (obavezno NE stavis --hex-dump) ... on to spuca u txt ... onda taj txt otvoris u nekom "iskusnom" editory koji zna sta je to enkoding, kazes mu da je fajl utf8, promenis definicije polja u utf8 (samo create menjas, ostavis podatke takvi kakvi su), snimis fajl (u ovom trenutku ce veci broj editora "popraviti" sitne byte greske koje postoje (mislim da sam zadnji put to popravljao sa KATE) i onda to importujes nazad u mysql ... ovde ti je najveci cim da li ce text editor umeti da odradi "popravku" (meni je kate odradio posao par puta gde su bile sitne greske na mnogo mesta - dok je glupi gedit bio potpuno nesposoban) ... takodje ako je fajl "velik" imas problem posto svi ovi pokusavaju to da usisaju u ram tako da - veliki swap + mnogo strpljenja, zadnji put kada sam to radio ucitavao je fajl oko 2h a snimao isti oko 4h!!! tu je zgodno da posebno exportujes data a posebno definicije, posto samo definicije menjas, za data je bitno da ucitas fajl, dodas jedan razmak i snimis ga, bitno je samo da editor zna da je utf8 enkoding u pitanju
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Izgubljen u encodingu... 12.10.2010. u 16:35 · pre 195 meseci #30
Probao sam sve moguce varijante koje su gore navedene.

Uspio sam sa pretvaranjem polja u blob pa iz blob-a u varchar sa UTF-8.
Time sam dobio sve naslove u tabeli bez kvakica.

Ali problem je kada trebam da izmjenim TEXT polje. Sve radi ok dok ne pocne vracanje nazad u UTF-8, tada MYSQL 'zezne' tabelu tako sto
nakon pretvaranja dobijem polje koje umjesto cijele vrijednosti imam samo vrijednost do prvog slova sa kvakicom, poslije toga nema nista :S

Da li ima neki nacin da uradim backup pa da u nekom text editoru uradim replace tih znakova sa kvakicama?
Potpis
SasaKaranovic.com ~
YouTube ~
Twitter
Re: Izgubljen u encodingu... 12.10.2010. u 16:46 · pre 195 meseci #31
naravno . mysqldump ..

elem, ono sto ti je najverovatnije problem je da ti je sadrzaj u text polju u pogresnom enkodingu daj jedan slog koji ne valja iz originalne tabele

select polje, hex(polje) from tabela where id=nesto into outfile '/tmp/uploadujnaforum';

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme