PHP + SQL Server με unicode χαρακτήρες

Συζητήσεις για τον Microsoft SQL Server

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

Απάντηση
pirli
Δημοσιεύσεις: 7
Εγγραφή: 28 Ιουν 2011 12:01

PHP + SQL Server με unicode χαρακτήρες

Δημοσίευση από pirli » 28 Ιουν 2011 12:42

Έχουμε μια εφαρμογή PHP + SQL Server 2005, όπου θέλουμε να αποθηκεύουμε ελληνικά, γαλλικά και άλλες γλώσσες. Έχουμε βάλει τα πεδία της βάσης να είναι nvarchar και τη σελίδα php που αποθηκεύει και δείχνει τα δεδομένα να τα εμφανίζει σε encoding utf8.
Τα δεδομένα αποθηκεύονται στη βάση σαν κινέζικα, όταν τα βλέπουμε μέσω SQL Sever Management Studio. Όμως η php σελίδα που τα τραβάει από τη βάση τα εμφανίζει σωστά σε utf8. Όταν πάλι πάμε να εισάγουμε δεδομένα κατευθείαν από το SQL Sever Management Studio, εμφανίζονται μεν σωστά στη βάση, αλλά η php σελίδα τα εμφανίζει κινέζικα.
Έχω ψάξει όλο το Ιντερνετ και δε βρίσκω λύση. Δεν ξέρω καν αν φταίει ο SQL Server ή η PHP. Αν έχετε κάποια ιδέα τι φταίει...

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

PHP + SQL Server με unicode χαρακτήρες

Δημοσίευση από ThyClub » 28 Ιουν 2011 12:51

Η βάση και οι πίνακες θα πρέπει να είναι σε utf8_general_ci και όταν κάνεις την σύνδεση στην βάση σου θα πρέπει να τρέχεις την εντολή:

SET NAMES 'utf8'

Απο κει και πέρα όλα θα είναι οκ.

pirli
Δημοσιεύσεις: 7
Εγγραφή: 28 Ιουν 2011 12:01

PHP + SQL Server με unicode χαρακτήρες

Δημοσίευση από pirli » 28 Ιουν 2011 13:02

Το SET NAMES 'utf8' δουλεύει σε MySQL, όχι σε SQL Server. Εμένα τουλάχιστον μου βγάζει λάθος ('NAMES' is not a recognized SET option).

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

PHP + SQL Server με unicode χαρακτήρες

Δημοσίευση από ThyClub » 28 Ιουν 2011 13:33

oops!! sorry δεν είδα οτι αναφέρεσαι σε ms sql.


pirli
Δημοσιεύσεις: 7
Εγγραφή: 28 Ιουν 2011 12:01

PHP + SQL Server με unicode χαρακτήρες

Δημοσίευση από pirli » 05 Οκτ 2011 17:46

Τελικά βρήκα μια λύση εδώ. Εγκαθιστώ την επέκταση sqlsrv και χρησιμοποιώ αυτή για να επικοινωνώ με τη βάση. Και όταν κάνω sqlsrv_connect βάζω

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

$connArr = array("Database"=>$dPconfig['dbname'], "UID"=>$dPconfig['dbuser'], "PWD"=>$dPconfig['dbpass'],
				"CharacterSet"=>"UTF-8");
$conn = sqlsrv_connect($dPconfig['dbhost'], $connArr) or die("cannot connect");
Πληροφορίες για την εγκατάσταση του sqlsrv extension εδώ

Άβαταρ μέλους
georiege
Δημοσιεύσεις: 79
Εγγραφή: 09 Ιούλ 2007 11:29
Επικοινωνία:

PHP + SQL Server με unicode χαρακτήρες

Δημοσίευση από georiege » 22 Δεκ 2011 13:36

Επίσης θα πρέπει στον πίνακα τής βάσης το πεδίο που κάνεις Insert να είναι data type : nvarchar για να υποστηρίζει όλες τις γλώσσες.
I do this for Aiur

http://www.aspx.gr

Απάντηση

Επιστροφή στο “MS SQL Server”

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

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