PHP, HTML5 , utf-8 ή iso-8859-7

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

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

Απάντηση
Άβαταρ μέλους
Lykos22
Δημοσιεύσεις: 89
Εγγραφή: 29 Μαρ 2011 16:28
Τοποθεσία: UK

PHP, HTML5 , utf-8 ή iso-8859-7

Δημοσίευση από Lykos22 » 29 Ιαν 2013 15:13

Καλησπέρα, θα ήθελα λίγο μερικές πληροφορίες για το encoding σε μια σελίδα php, μήπως δεν έχω κάνει κάτι σωστά.

Οι ρυθμίσεις που έχω κάνει είναι οι εξής:

α. εχω ορίσει στο phpmyadmin τους πίνακές μου με collation utf8_general_ci
β. στην HTML μέσα στο head χρησιμοποιώ το <meta charset="utf-8"> (ΗΤΜL5)
γ. και επίσης πρίν από κάθε HTML output έχω βάλει: header('Content-type: text/html; charset=UTF-8'); mysql_set_charset('utf8');

Το θέμα μου είναι ότι όταν κάνω insert στη βάση μου μία νέα εγγραφή, πχ κάνω insert το "Δοκιμή ελληνικά" και "Test" στα αγγλικά. Ενώ το "Test" περνάει κανονικά στη βάση και φαίνεται σαν Test και στη βάση και στον browser, το "Δοκιμή ελληνικά" θα μπει στη βάση μου ως:

&#206;"&#206;&#191;&#206;&#186;&#206;&#185;&#206;&#188;&#206;&#174; &#206;&#8226;&#206;»&#206;»&#206;·&#206;½&#206;&#185;&#206;&#186;&#206;¬

ή htmlentities($input, ENT_COMPAT, 'UTF-8') έτσι:

&Delta;&omicron;&kappa;&iota;&mu;&#206;&#174; &Epsilon;&lamb

και στο browser αυτό που βλέπω είναι: Δοκιμή Ε&lamb, επειδή είχα ορισει το πεδίο με varchar(50)

Εαν υπάρχει κάποιο λάθος σε αυτό πώς μπορώ να το διορθώσω ώστε να αποθηκεύονται και τα ελληνικά "σωστά" στη βάση μου?
Και επίσης εαν αντι του utf-8 χρησιμοποιήσω header("Content-Type: text/html; charset=iso-8859-7");
και βάλλω σαν collation greek_general_ci στη βάση μου, θα έχω την ίδια υποστήριξη σε ελληνικά και αγγλικά ή όχι?

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

PHP, HTML5 , utf-8 ή iso-8859-7

Δημοσίευση από dva_dev » 29 Ιαν 2013 15:37

Το θέμα μου είναι ότι όταν κάνω insert στη βάση μου μία νέα εγγραφή, πχ κάνω insert το "Δοκιμή ελληνικά" και "Test" στα αγγλικά. Ενώ το "Test" περνάει κανονικά στη βάση και φαίνεται σαν Test και στη βάση και στον browser, το "Δοκιμή ελληνικά" θα μπει στη βάση μου ως:

&#206;"&#206;&#191;&#206;&#186;&#206;&#185;&#206;&#188;&#206;&#174; &#206;&#8226;&#206;»&#206;»&#206;·&#206;½&#206;&#185;&#206;&#186;&#206;¬
Αυτό πως το βλέπεις οτι καταχωρείται έτσι;

Άβαταρ μέλους
Lykos22
Δημοσιεύσεις: 89
Εγγραφή: 29 Μαρ 2011 16:28
Τοποθεσία: UK

PHP, HTML5 , utf-8 ή iso-8859-7

Δημοσίευση από Lykos22 » 29 Ιαν 2013 15:48

dva_dev έγραψε: Αυτό πως το βλέπεις οτι καταχωρείται έτσι;
Από το phpmyadmin. Αν επιλέξω να δω τις εγγραφές ενός πίνακα.

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

PHP, HTML5 , utf-8 ή iso-8859-7

Δημοσίευση από dva_dev » 29 Ιαν 2013 17:45

Για τρέξε τα

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

show create database &#40;το όνομα της database&#41;;
και

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

show create table &#40;το όνομα του πίνακα&#41;;
και δείξε μας τι βγάζει.

Λογικά αν τα έχεις κάνει utf8 για το πρώτο πρέπει να βγάζει κάτι σαν

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

CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8 */
και για το δεύτερο κάτι σαν

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

CREATE TABLE `testusers` &#40;
  `id` int&#40;10&#41; unsigned NOT NULL AUTO_INCREMENT,
  `eponymo` varchar&#40;128&#41; DEFAULT NULL,
  `onoma` varchar&#40;128&#41; DEFAULT NULL,
  PRIMARY KEY &#40;`id`&#41;
&#41; ENGINE=InnoDB AUTO_INCREMENT=309 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

Άβαταρ μέλους
Lykos22
Δημοσιεύσεις: 89
Εγγραφή: 29 Μαρ 2011 16:28
Τοποθεσία: UK

PHP, HTML5 , utf-8 ή iso-8859-7

Δημοσίευση από Lykos22 » 30 Ιαν 2013 13:21

Τελικά το βρήκα το πρόβλημα. Πρόσθεσα αυτό:

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

mysql_query&#40;'set character set utf8',$connect&#41;;
mysql_query&#40;"SET NAMES 'utf8'",$connect&#41;;
και τα περνάει πλέον κανονικά στη βάση και τα ελληνικά και όχι ως "σύμβολα".[/code]

Απάντηση

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

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

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