UTF - 8 και ελληνικά

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

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

Απάντηση
bakalogatos
Δημοσιεύσεις: 15
Εγγραφή: 05 Ιαν 2008 22:42

UTF - 8 και ελληνικά

Δημοσίευση από bakalogatos » 23 Ιαν 2008 01:55

Για σας επανέρχομαι και πάλι :D Έχω πάλι πρόβλημα με την κωδικοποίηση UTF-8. Όταν έχω την σελίδα σε ANCI όλα μια χαρά! Όταν όμως αλλάζω σε UTF-8 υπάρχει πρόβλημα. Αν αλλάξω χειροκίνητα την κωδικοποίηση από τον ΙΕ όλα είναι εντάξει. Τι μπορεί να φταίει? Παραθέτω ένα παράδειγμα που μου δημιουργεί το πρόβλημα.
Ευχαριστώ!

funtion.php

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

<?php
function start_page&#40;$title , $type&#41;
&#123;
?>
<body bgcolor="#FFFF99">
<html>
<head> 
  <title><?php echo $title?></title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta http-equiv="Content-Language" content="el">
</head>
<body>
<table width="100%" border="1">
<tr>
   <td colspan="2" bgcolor="#FF9933">
   <body text="#000000"><h1><div align="center"><?php echo $type?></div></h1>
   </td>
</tr>
<tr>
   <td width="178" height="31" valign="top" align="center">
       <table border="0">
	     	<tr>
				<td>
	      			<a href="index_student.php"><img src="pics/index.gif"align="left"></a>
				</td>
			</tr>
			<tr>	
		   		<td>
					<a href="announcements.php"><img src="pics/announcements.gif"align="left"></a>
				</td>
			</tr>
			<tr>
				<td>	
					<a href="Documents.php"><img src="pics/stuff.gif"align="left"></a>
				</td>
			</tr>
			<tr>
				<td>
					<a href="homework.php"><img src="pics/homework.gif"align="left">
				</td>
			</tr>
			<tr>
				<td>
					<a href="communication.php"><img src="pics/communication.gif"align="left"></a>
		   		</td>
			</tr>
			</tr>
		</table>
  	</td>
	<td>
 <?php
&#125;    
 ?>
 
 
<?php
function end_page&#40;&#41;
&#123;
?>
  </td>
</tr>
</table>
</body>
</html>
<?php
&#125;
?>
announcements.php

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

<?php
include "function.php";
$title="Announcements";
$header="Ανακοινώσεις";
start_page&#40;$title,$header&#41;;
?>
  <blockquote>
     <p>
	 <font color="red"><h2>Ανακοίνωση 1</h2></font>
	 </p>
	 <blockquote>
	 <p><b>Hμερομηνία&#58;</b>12/12/2008</p>
	 <p><b>Θέμα&#58;</b>Έναρξη μαθημάτων</p>
	 <p>τα μαθήματα αρχίζουν στις 12/12/2007</p> 
	 </blockquote>
	 <hr align="right" width="70%">
	 <p>
	 <font color="red"><h2>Aνακοίνωση 2</h2></font>
	 </p>
	 <blockquote>
	 <p><b>Ημερομηνία&#58;</b>15/02/2008</p>
	 <p><b>Θέμα&#58;</b>Παράδοση εργασίας<p>
	 <p>Η εργασία έχει ανακοινωθεί στην ιστοσελίδα <a href="homework.html">"Eργασίες"</a>
          μπορείτε να ενημερωθείτε λεπτομερώς σχετικά με την εργασία.</p>
	 </blockquote>
	 <hr align="right" width="70%">
	 <p>
     <font color="red"><h2>Ανακοίνωση 3</h2></font>
     </p>
	 <blockquote>
	 <p><b>Ημερομηνία&#58;</b>25/02/2008</p>
	 <p><b>Θέμα&#58;</b> Προφορική εξέταση της εργασίας</p>
	 <p>Η εργασία θα εξεταστεί προφορικα.Οι φοιτητές που 
	   το ΑΕΜ τους τελειώνει σε περιττό αριθμό θα προσέλθουν στην 
	   αίθουσα Δ21 στις 25 Φεβρουαρίου στη 13&#58;00 για να εξεταστούν.
	   Οι φοιτητές που το ΑΕΜ τους τελειώνει σε Άρτιο αριθμό
	   θα προσέλθουν στις 30 Φεβρουαρίου στην αίθουσα Δ21 στη 13&#58;00
	   για να εξεταστούν.
	   <p>
	   Σημειώνεται ότι ο βαθμός της προφορικής εξέτασης θα 
	   πρέπει να είναι >=1.5, φοιτητές με βαθμό μικρότερο του 1.5 δεν 
	   μπορούν να προσέλθουν στις γραπτές εξετάσεις.
	   </p>
	 </p>
	 </blockquote>
     <hr align="right" width="70%">
  </blockquote>
  <br>
  <div align="right">
	  <a href="announcements.php"><p>top</p></a>
	  </div>
  </br>
  <?php
  end_page&#40;&#41;;
  ?>

dimis283
Δημοσιεύσεις: 118
Εγγραφή: 12 Ιουν 2006 00:53

UTF - 8 και ελληνικά

Δημοσίευση από dimis283 » 23 Ιαν 2008 10:29

Εχοντας ανάλογη εμπειρία σε jsp θα ήθελα να ρωτήσω:όταν θέλεις να έχεις σε utf-8 την κωδικοποίηση έχεις κάνει save το php σε unicode?Εγώ αυτό έκανα με τα jsp.
Dimis

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

UTF - 8 και ελληνικά

Δημοσίευση από vassilism » 23 Ιαν 2008 11:23

Δοκίμασε να ανοίξεις τα αρχεία σου με το σημειωματάριο και να κάνεις αποθήκευση ως, και στην κωδικοποίηση να διαλέξεις utf-8.
Επίσης στο αρχείο announcements.php δεν έχεις δηλώσει κωδικοποίηση utf-8.
Βάλτο σε html tags και δήλωσε και εκεί κωδικοποίηση.

bakalogatos
Δημοσιεύσεις: 15
Εγγραφή: 05 Ιαν 2008 22:42

UTF - 8 και ελληνικά

Δημοσίευση από bakalogatos » 23 Ιαν 2008 12:58

Αν ανοίξω τα αρχεία με το σημειωματάριο και διαλέξω αποθήκευση utf-8 έχω πρόβλημα με τα session γιατί βάζει και BOM. Έβαλα και στο announcement την κωδικοποίηση αλλά τίποτα. Πιστεύω ότι δεν χρειάζεται να την βάλω γιατί καλώ την start_page() όπου περιλαμβάνει την δήλωση για την κωδικοποίηση.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

UTF - 8 και ελληνικά

Δημοσίευση από dva_dev » 23 Ιαν 2008 12:59

<body bgcolor="#FFFF99">
<html>
<head>
<title><?php echo $title?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="el">
</head>
<body>
...
Ξεκίνα διορθώνοντας το παραπάνω...

bakalogatos
Δημοσιεύσεις: 15
Εγγραφή: 05 Ιαν 2008 22:42

UTF - 8 και ελληνικά

Δημοσίευση από bakalogatos » 23 Ιαν 2008 13:05

Οκ το διόρθωσα.

Άβαταρ μέλους
alexandr0s
Δημοσιεύσεις: 1064
Εγγραφή: 25 Απρ 2006 17:16
Τοποθεσία: localhost
Επικοινωνία:

UTF - 8 και ελληνικά

Δημοσίευση από alexandr0s » 23 Ιαν 2008 13:06

bakalogatos έγραψε:Αν ανοίξω τα αρχεία με το σημειωματάριο και διαλέξω αποθήκευση utf-8 έχω πρόβλημα με τα session γιατί βάζει και BOM. Έβαλα και στο announcement την κωδικοποίηση αλλά τίποτα. Πιστεύω ότι δεν χρειάζεται να την βάλω γιατί καλώ την start_page() όπου περιλαμβάνει την δήλωση για την κωδικοποίηση.
Το πρόβλημα με το session στο βγάζει μάλλον γιατί βάζεις κωδικοποίηση UTF-8 με υπογραφή. Πρέπει να βάλεις UTF-8 σκέτο χωρίς υπογραφή. Πχ στο Notepad2 (κατεβασέ το αν δεν το έχεις είναι free) έχει την εξής επιλογή:
File->Encoding->UTF-8
File->Encoding->UTF-8 with signature
Από αυτά τα 2 επιλέγεις το πρώτο.

(edit: δεν σε πρόλαβα :P)

bakalogatos
Δημοσιεύσεις: 15
Εγγραφή: 05 Ιαν 2008 22:42

UTF - 8 και ελληνικά

Δημοσίευση από bakalogatos » 23 Ιαν 2008 13:14

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

bakalogatos
Δημοσιεύσεις: 15
Εγγραφή: 05 Ιαν 2008 22:42

UTF - 8 και ελληνικά

Δημοσίευση από bakalogatos » 23 Ιαν 2008 13:54

Τελικά βρήκα μια λύση! Πήγα στο αρχείο httpd.conf του apache και έκανα την αλλαγή
AddDefaultCharset ISO-8859-1 σε
AddDefaultCharset UTF-8. Όλα δουλεύουν μια χαρά! Την αλλαγή αυτή μπορώ να την κάνω στον unifrom server. Προσπάθεισα να κάνω και το ίδιο στον wamp αλλά δεν μπορώ να βρώ το
AddDefaultCharset στο αρχείο httpd.conf. Έχετε καμία ιδέα?

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

UTF - 8 και ελληνικά

Δημοσίευση από cpulse » 24 Ιαν 2008 01:55

Αυτή η αλλαγή που έκανες έχει επιπτώσεις...

Από δω και πέρα ό,τι charset κι αν βάζεις στις σελίδες όλων των virtual domains του server σου αυτές θα γυρνάνε στο UTF-8.

Αν θες την γνώμη μου πήγαινε πίσω στον apache που έκανες την αλλαγή και κάνε comment out την γραμμή με το AddDefaultCharset

bakalogatos
Δημοσιεύσεις: 15
Εγγραφή: 05 Ιαν 2008 22:42

UTF - 8 και ελληνικά

Δημοσίευση από bakalogatos » 24 Ιαν 2008 14:09

Δεν πρόκειται να αναπτύξω άλλες σελίδες. Αυτή την έκανα μόνο γιατί την είχαμε εργασία. Οπότε ήθελα να λειτουργίσει μόνο για αυτή :lol:

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

UTF - 8 και ελληνικά

Δημοσίευση από cpulse » 24 Ιαν 2008 15:29

Αν κάνεις τη δουλειά σου καλώς. Αλλά το σωστό είναι να μην υπάρχει καθόλου τέτοια ρύθμιση στον apache.

Για όσους τύχει να πέσουν σε αυτό το thread ας το εξηγήσω...

Όταν στέλνουμε μια σελίδα στον χρήστη αυτή περιέχει κάποιους headers και μετά το HTML. Με την PHP συνήθως ελέγχουμε μόνο το HTML κομμάτι. Τους headers τους ελέγχουμε με την εντολή header() το οποίο το κάνουμε σε ελάχιστες περιπτώσεις μόνο όταν υπάρχει ανάγκη. Αυτή η ρύθμιση του apache ορίζει το charset στους headers ακόμα κι αν εμείς δεν το θέλουμε. Ο apache από μόνος του κάνει το ίδιο που χειροκίνητα με PHP θα κάναμε με

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

header&#40;'Content-Type&#58; text/html; charset=ISO-8859-1'&#41;;
Αλλά εσύ όπως βλέπω ορίζεις το charset και μέσα στο HTML σου με αυτή τη γραμμή

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

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Επομένος το charset ορίζεται δύο φορές. Όταν συμβαίνει αυτό τότε νικάει ο header. Γι αυτό μάλλον δεν στο εμφάνιζε σαν UTF-8. Αν κάνεις comment out την γραμμή AddDefaultCharset τότε θα υπήρχε μόνο ένας ορισμός για charset μέσα στο HTML και δεν θα υπήρχε πρόβλημα.

Αυτό που έκανες εσύ είναι να ορίσεις και στον header το UTF-8, αλλά όπως σου είπα αυτό θα κάνει override όλα τα άλλα HTML που θα βγαίνουν από τον server.

Απάντηση

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

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

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