greek encoding

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
sofrr
Δημοσιεύσεις: 50
Εγγραφή: 20 Δεκ 2005 21:22
Τοποθεσία: Πειραιάς

greek encoding

Δημοσίευση από sofrr » 10 Φεβ 2006 15:36

Καλησπέρα. Εδώ και αρκετους μήνες ασχολούμαι με php και mysql και παράλληλα παιδεύομαι με το greek encoding.

Επειδή έχω ακούσει ότι η καλύτερη κωδικοποίηση είναι σε utf-8 χρησιμοποιώ τις ακόλουθες συναρτήσεις¨:
Στην αρχή αρχή της σελίδας χρησιμοποιώ:

Κώδικας: Επιλογή όλων

<?php  mb_http_output&#40;"utf-8"&#41;; ?>
Έπειτα πριν από οποιοδήποτε query τοποθετώ:

Κώδικας: Επιλογή όλων

 mysql_query&#40; " set character set 'utf8' "&#41;;
mysql_query&#40; " SET  NAMES  'utf8' "&#41;;
Επίσης στο αρχείο connect.php που περιέχει την σύνδεση με την βάση τοποθετώ:

Κώδικας: Επιλογή όλων

mysql_query&#40;"set character_set_connection=utf8"&#41;;
mysql_query&#40;"set character_set_client=utf8"&#41;;
ακριβώς μετά την εντολή

Κώδικας: Επιλογή όλων

mysql_select_db
Παρόλα αυτά όταν τρέχω για πρώτη φορά την σελίδα εμφανίζονται ???? και με το πρώτο ή δεύτερο ή τρίτο preview οι χ/ρες εμφανίζονται κανονικά.


Χρησιμοποιώ XAMPP Version 1.4.15 το οποίο περιέχει PHP: 5.0.4, Apache/2.0.54 , MySql 4.1.13 .

Στο αρχείο http.conf του Apache έχω γυρίσει το default charset σε utf-8.
Όλα τα collation της MySQl τα έχω γυρίσει σε utf8.


Tι άλλο πρέπει να κάνω!!!!;;;;;

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

greek encoding

Δημοσίευση από panosru » 10 Φεβ 2006 15:58

file oti kai na kaneis apo pleyras kodika an den exeis balei sosta ta collation mesa apo thn mySQL kathos eftiaxnes thn bash mono ???? tha blaipeis! :P opote phgaine kai allakse ta collation se utf8_general_ci efoson ta thes se utf8, ego ta exo greek_general_ci kai eimai mia xara! :D

btw: bghke XAMPP ver. 1.4.16 :D

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

greek encoding

Δημοσίευση από panosru » 10 Φεβ 2006 16:13

oops tora to diabasa ayto:
Όλα τα collation της MySQl τα έχω γυρίσει σε utf8.
loipon...
an thes allakse ta collation apo thn mysql sou se greek_general_ci kai xrhshmopoihse thn class pou sou eftiaksa gia na kaneis connect sthn db sou, fysiologika prepei na doulepsei :D

Κώδικας: Επιλογή όλων

<?PHP
class mysql_class
&#123;
  var $host;
  var $user;
  var $pass;
  var $db;
  var $char;
  var $error;
  	
  function mysql_class&#40;$host, $user, $pass, $db, $char&#41; 
  &#123;
  	$this -> host = $host;
  	$this -> user = $user;
  	$this -> pass = $pass;
  	$this -> db = $db;
  	$this -> char = $char;
  	
  	if &#40;&#40;&#40;$this -> dbconect&#40;&#41;&#41; === false&#41; || &#40;&#40;$this -> dbselect&#40;&#41;&#41; === false&#41; || &#40;&#40;$this -> dbcharset&#40;&#41;&#41; === false&#41;&#41; &#123;
	    foreach&#40;$this -> error as $key => $val&#41; &#123;
	        print &#40;$key + 1 . " => &#123;$val&#125; <br />"&#41;;
	    &#125;
	    die&#40;"<p><h4>Error acured page display</h2></p>"&#41;;  		
  	&#125; else &#123;
		// MAKE THE CONNACTION
		$this -> dbconect&#40;&#41;;
		$this -> dbselect&#40;&#41;;
		$this -> dbcharset&#40;&#41;;  		
  	&#125;
  &#125;
  function dbconect&#40;&#41; 
  &#123;
      if&#40;!@mysql_connect&#40;$this -> host, $this -> user, $this -> pass&#41;&#41; &#123;
          $this -> error&#91;&#93; = "Error conecting to database -> " . mysql_error&#40;&#41; . " <b>Error number&#58; " . mysql_errno&#40;&#41; . "</b>";
          return &#40;false&#41;;
      &#125;
  &#125;   
  function dbselect&#40;&#41; 
  &#123;      
      if&#40;!@mysql_select_db&#40;$this -> db&#41;&#41;&#123;
          $this -> error&#91;&#93; = "Error selecting the database &#123;$this -> db&#125;";
          return &#40;false&#41;;
      &#125;
  &#125;
  function dbcharset&#40;&#41; 
  &#123;      
      if&#40;!&#40;@mysql_query&#40;"SET CHARACTER SET '&#123;$this -> char&#125;'"&#41;&#41; && &#40;@mysql_query&#40;"SET NAMES '&#123;$this -> char&#125;'"&#41;&#41;&#41; &#123;
          $this -> error&#91;&#93; = "Error while changing character set to &#123;$this -> char&#125;";
          return &#40;false&#41;;
      &#125;
  &#125; 
&#125;

$myDB = new mysql_class&#40;"localhost", "username", "password", "database", "greek"&#41;;
?>

sofrr
Δημοσιεύσεις: 50
Εγγραφή: 20 Δεκ 2005 21:22
Τοποθεσία: Πειραιάς

greek encoding

Δημοσίευση από sofrr » 15 Φεβ 2006 14:50

σε ευχαριστώ πολύ για το scriptaki αλλά την βρήκα την λύση.
Την δημοσιεύω εδώ για να την δουν και οι άλλοι που έχουν το ίδιο πρόβλημα.

Επειδή θα αναφερθώ σε κωδικοποίηση utf8 φαντάζομαι το ίδιο ισχύει και για την περίπτωση greek. Τα βήματα έχουν ως εξής:

α) Γυρνάς την collation της βάσης σου σε utf8_general_ci, όπως και τo collation κάθε πίνακα που περιέχεται στην βάση καθώς και των πεδίων του κάθε πίνακα (εννοείται ότι σε ενδιαφέρουν τα πεδία varchar και text)

β) Υπάρχει η εντολή

Κώδικας: Επιλογή όλων

mysql_query &#40;' set character set utf8 '&#41;;
για την οποία έχει μεγάλη σημασία που ακριβώς θα τοποθετηθεί.

Δύο είναι τα σημεία που τοποθετείται:

1)Ακριβώς μετά την εντολή

Κώδικας: Επιλογή όλων

mysql_select_db&#40;&#41;
και
2) Πριν από καθε άλλη εντολή

Κώδικας: Επιλογή όλων

mysql_query&#40;&#41;
η οποία κάνει retrieve τα data από την βάση.

Από την στιγμή που έκανα αυτές τις αλλαγές δεν παρουσιάστηκε κανένα πρόβλημα. Πάντως το scriptaki σου μου άρεσε, το έκανα copy γιατί ποτέ δεν ξέρεις...

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

greek encoding

Δημοσίευση από panosru » 15 Φεβ 2006 15:13

giati ta thes se utf8? :D
to exeis syndesei me flash?

sofrr
Δημοσιεύσεις: 50
Εγγραφή: 20 Δεκ 2005 21:22
Τοποθεσία: Πειραιάς

greek encoding

Δημοσίευση από sofrr » 15 Φεβ 2006 15:52

Δεν έχω καποιο ιδιαίτερο κόλλημα με utf8, απλά έχω ακούσει ότι ενδείκνυται για πολυγλωσσικό site (και σε αυτό που φτιάχνω υπαρχουν και αγγλικές λέξεις). Επίσης έχει ιδιαίτερη σημασία σε τι κοινό απευθύνεται η ιστοσελίδα σου. Αν π.χ την έχεις σε ISO-8859-7 και μπει ένας ξένος, τότε υπάρχει περίπτωση να δει τα αγγλικά κανονικά και τα ελληνικά κινέζικα, ενώ με utf8 θα τα δει κανονκά. Φυσικά μπορεί ο άνθρωπος να μην ενδιαφέρεται να διαβάσει ελληνικά , αλλά όλο το αισθητικό αποτέλεσμα μπορεί να τον "χαλάσει".
Κατα τα άλλα αν ενδιαφέρεται κάποιος να φτιάξει δυναμικό site μόνο για Έλληνες και το οποίο να έχει μόνο Ελληνικά το ISO-8859-7 είναι μια χαρά

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

greek encoding

Δημοσίευση από panosru » 15 Φεβ 2006 15:55

sosto ayto ;) episeis fonts opos tahoma kai verdana an den kano lathos den yposthrizontai apo linux, to exo diabasei kapou den ksero kata poso ysxiei :D

sofrr
Δημοσιεύσεις: 50
Εγγραφή: 20 Δεκ 2005 21:22
Τοποθεσία: Πειραιάς

greek encoding

Δημοσίευση από sofrr » 15 Φεβ 2006 16:21

Κοίτα, για τα Tahoma δεν ξέρω..τα Verdana πάντως τα έχω χρησιμοποιήσει σε Unix και παίζουν μια χαρά

Άβαταρ μέλους
shadow
Script Master
Δημοσιεύσεις: 606
Εγγραφή: 14 Απρ 2005 18:30

greek encoding

Δημοσίευση από shadow » 15 Φεβ 2006 16:23

δεν ισχύει, ουτε για tahoma/verdana, και οι δυο γραμματοσειρές παίζουν μια χαρά
Close your eyes
For your eyes will only tell the truth and the truth isnt what you want to see
In the dark, is it easy to pretend that the truth is it ought to be.
Programmers are programmers because they like to code

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

greek encoding

Δημοσίευση από panosru » 15 Φεβ 2006 16:28

a ok! :D

cyberdad
Δημοσιεύσεις: 1
Εγγραφή: 21 Μαρ 2006 14:11

greek encoding

Δημοσίευση από cyberdad » 21 Μαρ 2006 14:23

Παιδιά χίλια ευχαριστώ για αυτά τα post. Μου γλυτώσατε αρκετές ώρες ψαξίματος (αν και το είχα βρει και εγώ παλιότερα - που να το θυμάμαι).

Πράγματι η εντολή:
mysql_query (' set character set utf8 ');
δουλεύει μια χαρά και ο λόγος που χρειάζεται ειναι πολύ απλά γιατί υπάρχει bug στην σειρά 4x της MySQL.

To UTF-8 το προτείνω ανεπιφύλακτα γιατί επιτρέπει πολύ εύκολα επέκταση ενός site και σε άλλες γλώσσες ενω επίσης καθιστά τα στοιχεία προσβάσιμα και σωστά από διάφορες τεχνολογίες όπως XML,JSON,Flash και αλλα. Δεν είναι απαραίτητο αλλά μάλλον θα εξελιχθεί σε standard λόγω αυτών των διάφορων τεχνολογιών που πολλές φορές μπορούν και να συνυπάρχουν σε ένα site ή project ταυτόχρονα.
Οπότε UTF-8 all the way.

Ελπίζω μόνο να μην υπάρχει ασυμβατότητα με την 5αρα την MySQL και θέλει πάλι διορθώσεις αργότερα. Φαντάζομαι πως δεν θα υπάρχει πρόβλημα μια που η 5x είναι πραγματικά πάρα πολύ δυνατή και προσεγμένη έκδοση αλλά ποτέ δεν ξέρεις.

Thanks again! :D

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

greek encoding

Δημοσίευση από panosru » 22 Μαρ 2006 16:19

kai go pisteyo pos tinoun ola gia UTF-8 kai allaksa tis selides mou se UTF-8 kyrios giati sta panel pou exo me AJAX h anagnosh ton ellhnikon me ISO-8859-7 ginete an sthleis ena header me content-type se ISO-8859-7 alla h eggrafh ton ellhnikon einai martyrio to epsaxna xthes poly ora kai den brika kati kai anagkastika ta perasa se UTF-8 gia na exo epityxhmenh eggrafh me ellhnika sthn bash meso AJAX

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

greek encoding

Δημοσίευση από txc » 02 Μάιος 2006 23:16

καλησπέρα παιδιά, μια ερωτησούλα από εμένα, έχω μια φόρμα στην οποία καταχωρεί ο χρήστης δεδομένα, αυτά τα δεδομένα περνιούνται σε βάση, όταν ο χρήστης γράφει ελληνικά κάποια πεδία τότε το αντίστοιχο πεδίο στη βάση γεμίζει και μόλις προσπαθώ να δω τα δεδομένα της βάσης μου βγάζει ερωτηματικά κλπ.

δηλαδή εγώ θέλω να διαβάζω τα στοιχεία του πίνακα της βάσης μου και να βλέπω τα ελληνικά, αυτό διορθώνεται με τους παραπάνω τρόπους που αναφέρατε? ευχαριστώ

sofrr
Δημοσιεύσεις: 50
Εγγραφή: 20 Δεκ 2005 21:22
Τοποθεσία: Πειραιάς

greek encoding

Δημοσίευση από sofrr » 03 Μάιος 2006 10:39

Ακολούθησε τα βήματα που περιγράφονται πιο πάνω-πιστεύω ότι δεν θα έχεις πρόβλημα

Άβαταρ μέλους
Hermeia
Honorary Member
Δημοσιεύσεις: 987
Εγγραφή: 02 Αύγ 2004 00:14
Τοποθεσία: Αθήνα
Επικοινωνία:

greek encoding

Δημοσίευση από Hermeia » 03 Μάιος 2006 19:50

σχετικά με linux-fonts

ο κάθε χρήστης μπορεί να προσθέσει κάθε γραμματοσειρά που έχει νόμιμα (ή που προσφέρεται ελεύθερα), με τυπικές διαδικασίες
- και μάλιστα όλες οι εγκατεστημένες γραμματοσειρες του συστήματος μπορουν να χρησιμοποιηθουν άμεσα και στο πρόγραμμα επεξεργασίας εικόνας (gimp) - χωρις καμια παραπάνω ρύθμιση

.. αρα.. όλες οι γνωστες γραμματοσειρές υπαρχουν γενικά στις πρόσφατες ελληνικές διανομές..



- για txc
- πρέπει επίσης να βεβαιωθείς ότι η καταχώρηση του χρήστη θα αποθηκεύεται στην ίδια κωδικοποίηση
Hermeia the InfoSharer
Η Γνώση είναι Δύναμη
Εικόνα

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης