PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Ikka see vene keel...
Postitaja: joker 2005-10-19 16:59:40
Sisestasin läbi MySQLi andbemaasi hunnik eestikeelseid täppidega ja venekeelseid tähti. Antud välja kodeering on utf8_unicode_ci, MySQL ühenduse kollatsioon on utf8_general_ci, MySQLi all näitab kõike tipp-topp.

Kui aga vaatan antud infot läbi PHP scripti, siis asendatakse tähed küsimärkidega ???????????????? (samas lehekülje päises on korrektselt kodeeringuks <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>).

Päritakse andmebaasist lihtsalt:
$sql_select = mysql_query( "select * from tabel where status='129'");
...
echo $text;

Milles võib probleem olla?

Viimati muudetud: 19-10-2005 17:00:27
Muutja: joker
Põhjus:

RE: Ikka see vene keel...
Postitaja: ants@ 2005-10-19 17:24:45
Ainuke lahendus on see, et vene keel tuleks Eesti riigis ära keelata!
Kõik venelased Venemaale tagasi saata ning punasõdur ükskord ometi maha võtta.
Punasõdurit peaks maha võtma tulema SS'i embleemidega hall kraana, et oleks ikka õiglane!

Ja mida need venelased kisavad, et neid diskirmineeritakse? Enamik kriminaaluudiseid puudutavad mingeid Kohtla-Järve või Narva Dmitrisid, kes kurat ei saa aru, et keegi ei soovi neid, kui kurjategijaid siia!

Korralike venelaste vastu pole mul midagi, aga vat vante ma ei salli
RE: Ikka see vene keel...
Postitaja: joker 2005-10-19 17:38:57
Kas kellegil on paremaid ideid kui antsul, see olukorda ei lahenda!
RE: Ikka see vene keel...
Postitaja: iam 2005-10-19 17:49:31
TSITEERITUD:
Kas kellegil on paremaid ideid kui antsul, see olukorda ei lahenda!
sa headerit oled proovinud? mul nt opera ei näita enne lehte õige encodinguga kui header saadetud...
RE: Ikka see vene keel...
Postitaja: joker 2005-10-20 09:48:15
Ei ole ka sellest erilist kasu!

Igaks juhuks panen copy tabeli genereerimisest MySQLi:
CREATE TABLE `abba` ( `id` int(60) NOT NULL auto_increment, `comments` text character set utf8 collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10;

Järsku on mul siin mingid kodeeringud valed?
RE: Ikka see vene keel...
Postitaja: monte_ 2005-10-20 10:32:11
salvesta fail ise KAH utf-8 encodinguga ... lisaks pane lehe päisesse
veel

header('Content-Type: text/html; charset=UTF-8');
RE: Ikka see vene keel...
Postitaja: joker 2005-10-20 11:50:40
Ohh, tuleb välja, et ennem andmebaasist päringu tegemist tuleb panna:
mysql_query("SET NAMES 'utf8'");
RE: Ikka see vene keel...
Postitaja: utf8_unicode_ci 2005-10-21 21:33:50
aga mul see ei funka mysql'is: utf8_unicode_ci
ütleb vea, et pole üldse õige asi jne, et mis saab valesti olla?
RE: Ikka see vene keel...
Postitaja: joker 2005-10-22 12:05:31
Olen nüüd pea kuu aega vene keelega piike murdnud ja nüüd hakkan asjaga vaikselt ühele poole saama. Uhh, on ikka need teadmised vaevaliselt tulnud.

Minu tähelepanekud, mida tasub tähele panna kui kasutatakse mitmekeelset lehekülge:
1. Kogu lehekülg peaks olema UTF-8 formaadis. Sel juhul saad ristkasutada nii eesti, vene kui inglise keelt.
2. Lehekülje päisesse soovitav toppida
header("Content-type: text/html; charset=utf-8");
3. Andmebaasist päringu tegemisel soovitav kasutada
mysql_query("SET NAMES 'utf8'");
mysql_query('SET CHARACTER_SET utf8');
4. Tabelite väljad on soovitav panna utf8_unicode
5. Scriptid mida saab kasutada UTF8 ja iso-8859-1 konventeerimisel


PHP kood:
 
//ISO 8859-1 to UTF-8
$str_utf8 preg_replace("/([\x80-\xFF])/e"
           
"chr(0xC0|ord('\\1')>>6).chr(0x80|ord('\\1')&0x3F)",
             
$str_iso8859_1);
                          
//UTF-8 to ISO 8859-1
$str_iso8859_1 preg_replace("/([\xC2\xC3])([\x80-\xBF])/e"
               
"chr(ord('\\1')<<6&0xC0|ord('\\2')&0x3F)",
                 
$str_utf8);


Axeliplan_ kood siitsamast foorumist:

PHP kood:
 
function encode_utf8($rohtext

    
$rohtext str_replace("rn","n",$rohtext); 
    
$utftext ""
    for(
$n 0$n strlen($rohtext); $n++) 
    { 
        
$c ord($rohtext{$n}); 
        if (
$c 128
            
$utftext .= chr($c); 
        else if((
$c 127) && ($c 2048)) 
        { 
            
$utftext .= chr(($c >> 6) | 192); 
            
$utftext .= chr(($c 63) | 128); 
        } 
        else 
        { 
            
$utftext .= chr(($c >> 12) | 224); 
            
$utftext .= chr((($c >> 6) & 63) | 128); 
            
$utftext .= chr(($c 63) | 128); 
        } 
    } 
    return 
$utftext
}
echo 
encode_utf8('sdfgäöüõS');


PHP ende scriptid encodimiseks ja decodimiseks:

PHP kood:
 
$test_text 
"See on üks imelik jutt - ÜÕÖÄÕÜÄÖ";                 
echo 
"</br>Algtekst: $test_text</br>";
$test_text utf8_encode($test_text);                              
echo 
"UTF8: $test_text</br>";
$test_text utf8_decode($test_text);    
echo 
"ISO 8859-1: $test_text</br>";  


Päring andmebaasist:

PHP kood:
 
mysql_query
("SET NAMES 'utf8'");
$sql_select mysql_query"select * from tabel");
while (
$row mysql_fetch_array($sql_select))
    {
    
$comments=$row["comments"]; 
    echo 
"</br></br>: $comments</br></br>";
    }


Funktsioon mailide saatmiseks siitsamast foorumist:

PHP kood:
 
function send_mail($saatja$saatja_mail$saaja$saaja_mail$pealkiri$sisu) { 
  
$headers "MIME-Version: 1.0\n"
  
$headers .= "Content-type: text/plain; charset=utf-8\n"
  
$headers .= "X-Priority: 1\n"
  
$headers .= "X-MSMail-Priority: High\n"
  
$headers .= "X-Mailer: php\n"
  
$headers .= "From: ".$saatja." <".$saatja_mail.">\n"

     return(
mail("\"".$saaja."\" <".$saaja_mail.">"$pealkiri$sisu$headers)); 
}


Kõike paremat,
Joker

Viimati muudetud: 22-10-2005 12:05:52
Muutja: joker
Põhjus: täpsustus

RE: Ikka see vene keel...
Postitaja: joker 2005-10-22 22:42:38
Kuigi eelpool nimetatud scriptid on head ja toredad, kuid ikka pole asi täiuslik. Konventeerimisel iso-8859-1 -> UTF8sse ei suuda antud scriptid konventeerida erisümboleid. Näiteks. "&#8230;", "&frac34;", "&reg;", "&sup1;", "&copy;", "&#8221;", "&#8220;", "&#8211;", "&#8212;", "&#8216;", "&#8217;",...

Kas kellegil scriptijuppi mida on kasutanud konventeerimisel ja sisaldaks juba ka erisümbolite konventeerimist?

Isegi siin leheküljel ei näidata koode õieti! Vihje php.ee meeskonnale - leheküljel oleks hea kasutada ka vene keelseid ja erikoode, mitte html entiteid välja näidata!

Viimati muudetud: 22-10-2005 22:44:24
Muutja: joker
Põhjus:

RE: Ikka see vene keel...
Postitaja: aksel 2005-10-22 22:48:35
Mis ajast utf8_encode ja utf8_decode ei piisa? St et miks nii keeruliseks asja ajate? Selle osaga olen nõus, et kogu leht peaks olema utf8-s ja kindlasti tuleb brauserile saata headeri või metaga info, et kodeering on utf8.

Kui leht on utf8, siis vormidest tulev info on ka ilusti utf8 ja läheb ka baasi sellena.
RE: Ikka see vene keel...
Postitaja: joker 2005-10-22 23:29:00
Kui hakata tühjalt lehelt, siis on muidugi asi lihtne...

Asi selles, et eelnevalt oli mul andmebaasis väljade kodeering latin1_swedish_ci, lehekülje charset iso-8859-1. Kui nüüd muudan andmebaasi väljade kodeeringud ja lehe seadeid UTF8ks, siis ei tähenda ju see seda, et tabelis olev info läheb kohe teise kodeeringusse. Selleks pean scriptiga ju konventeerima kogu tabelites oleva informatsiooni samuti UTF-8sse.

Või piisab lihtsalt, et panna igal pool lehekülgede algusesse...
mysql_query("SET NAMES 'utf8'");
mysql_query('SET CHARACTER_SET utf8');

Viimati muudetud: 22-10-2005 23:34:24
Muutja: joker
Põhjus:

RE: Ikka see vene keel...
Postitaja: noorprogeja 2006-08-18 11:44:09
...mul täiesti piisas sellest, kui päises charset utf-8 panna ja fail ise utf-8 -ks üle konvertida, oligi vsjo... töötab nagu miilenki
RE: Ikka see vene keel...
Postitaja: eestlane 2006-08-18 12:00:38
TSITEERITUD:

Isegi siin leheküljel ei näidata koode õieti! Vihje php.ee meeskonnale - leheküljel oleks hea kasutada ka vene keelseid ja erikoode, mitte html entiteid välja näidata!


Aga rootsi tähestik, aga kanji (jaapani tähestik ja hiina märgid).
Et kui ikka vaja pole, siis pole mõtet igalepoole toppida ... ja venelasi vene keeles siia kirjutama - ei aitäh.
RE: Ikka see vene keel...
Postitaja: nimetu 2007-02-07 13:48:18
vot jobu rassist
RE: Ikka see vene keel...
Postitaja: . 2007-02-07 13:53:27
TSITEERITUD:
vot jobu rassist
Kas venelased on mõnest muust rassist kui eestlased?
RE: Ikka see vene keel...
Postitaja: nimetu 2007-02-07 13:53:50
vabandan, see k2is antsu kohta.
RE: Ikka see vene keel...
Postitaja: Ice 2007-02-17 17:45:55
F*cking rassist,
Kes teile ehitas teile? sama Kaubamaja?a? koik paneel majad on ehitatud vene ajal, voi mul pole oigus?
RE: Ikka see vene keel...
Postitaja: blaah 2007-02-18 08:27:20
olge head, kolige selle jamaga delfisse tagasi.

Other than that, vene keelt on progemises ikka vaja, mõned idioodid muidugi blokeerivad igasugused äritehingud nii suure turuga enese jaoks ära - nende isiklik mure :P

Mis rassismi puutub siis minu arust on emacsi kasutajad ahvid.

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0980370044708