Προβλημα σχετικο με το gr encoding σε mysql4.1.x με php5.x

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

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

Απάντηση
trv
Δημοσιεύσεις: 1
Εγγραφή: 09 Νοέμ 2005 04:27

Προβλημα σχετικο με το gr encoding σε mysql4.1.x με php5.x

Δημοσίευση από trv » 09 Νοέμ 2005 04:33

Καλησπερα σας,

Το προβλημα ειναι ενας συνδυασμος προβληματων μεταξυ phpbb, php5.0.5, mysql4.1.15 και υποστιριξης των ελληνικων

Η βάση στην mysql έχει collation greek_general_ci όπως έχουν και όλα τα tables.

Το πρόβλημα:

Αν ο χρηστής έχει επιλεγμένη γλωσσά ελληνικά, το φόρουμ χρησιμοποιεί iso-8859-7 για να στείλει τους χαρακτήρες/ποστς στην βάση. (οπως οριζεται στο lang_main.php)
Όταν γίνεται αυτό, τότε δε δουλεύουν κάποια πράγματα όπως τα quote και τα code bbcode tags όταν κάποιος πάει να κάνει quote ένα ποστ που περιέχει ελληνικούς χαρακτήρες.
Αν τα ποστς έχουν αγγλικούς χαρακτήρες τότε δεν υπάρχει πρόβλημα.

Επίσης, αν κάποιος χρηστής χρησιμοποιεί αγγλική γλωσσά, άρα το φόρουμ θα στείλει το ποστ στη βάση με iso-8859-1, και αυτός ο χρηστής γράψει ένα ποστ με ελληνικούς χαρακτήρες, τότε αυτό το ποστ θα αποθηκευτεί στην βάση σε μορφή τεστ για παράδειγμα, αλλά, θα μπορεί να γίνει quote κανονικά, δηλαδή θα δουλεύει. Και θα φαίνεται κανονικά στα ελληνικά, με την προϋπόθεση ο χρηστής να επιλέξει greek encoding στον browser του (ώστε να κάνει override την ρύθμιση για iso-8859-1 που θα έχει επιβληθεί από το forum).

Τι μπορει να φταιει για ολα αυτα??

Ολα αυτα σε απλο δοκιμαστικο phpbb forum 2.0.18 σε καθαρη εγκατασταση απο την αρχη.

Case1:
Αν υπαρχει χαρακτηρας μεσα ή πριν το quote ή code tag, τοτε αυτο εμφανιζεται σαν απλο κειμενο, δε δουλευει δηλαδη.

Case2:
Αν δεν υπαρχουν ελληνικα γραμματα στο ποστ, ή υπαρχουν αλλα μετα το τελος του tag, τοτε αυτο εμφανιζεται κανονικα..


Μερικες περισσοτερες πληροφοριες απο το phpmyadmin
απο το phpbb_posts table


[table]
[mrow]post_id[col]bbcode_uid[col]post_subject[col]post_text
[row]2[col]313efd319f[col] [col]τεστ
[row]6[col]1e0d315461[col] [col]
τεστ

[row]10[col]f5b924879e[col] [col][quote:f5b924879e]test[/quote:f5b924879e]
[row]12[col]20a0dc00ce[col] [col][quote:20a0dc00ce]test[/quote:20a0dc00ce]τεστ
[/table]


στο post_id 2 ειναι ενα ποστ με ελληνικους χαρακτηρες (γραμμενους απο χρηστη με iso-8859-7)
στο post_id 6 υπαρχει ενα quote με ελληνικο κειμενο μεσα -->εμφανιζεται σαν κανονικο κειμενο, δε δουλευει το bbcode. (το κενο εχει μπει επειδη εδω δουλευει )
στο post_id 10 υπαρχει quote με αγγλικο κειμενο-->δουλευει μια χαρα, ανεξαρτητα του ποιος εγραψε το ποστ.
στο post_id 12 υπαρχει quote με αγγλικο κειμενο μεσα, και ελληνικο κειμενο μετα --> το quote δουλευει κανονικα, το κειμενο μετα φαινεται κανονικα.


περισσοτερες πληροφοριες

$lang['ENCODING'] = 'iso-8859-7'; στο lang_main.php
mysql 4.1.15 προσφατη αναβαθμιση απο 4.0.χ (νομιζω)
PHP5.0.5 προσφατη αναβαθμιση απο php4.x.x


What is going on? please help!

Υποπτευομαι οτι εχει να κανει με τον τροπο που η php5 εισαγει τους χαρακτηρες σε mysql4.1.x.. Κατι πρεπει να παιζει με τα collation επισης.

Μια λυση που βρηκα ειναι να φτιαξω μια βαση με το default collation (latin1_swedish) (!). Αν γινει αυτο, τοτε ολα δουλεουν μια χαρα, ανεξαρτητα του iso που χρησιμοποιει ο χρηστης στο lang_main, τα quotes κανονικα σε ελληνικα και αγγλικα κτλ.
ΑΛΛΑ, μεσα στη βαση, τα ελληνικα αποθηκευονται με ιερογλυφικους χαρακτηρες, πραγμα που δε θελω, καθως πρεπει να ειναι editable μεσα απο phpmyadmin.
Επισης το κυριως φορουμ (που εχει το ιδιο προβλημα) και το οποιο ειναι ενεργο και με πολλους χρηστες, εχει greek collation, και δε ξερω τι θα γινει και ποσο ευκολο ειναι να αλλαξει αυτο για λογους συμβατοτητας..

Ενας χαμος γινεται με αυτα τα θεματα, ή εγω τα μπερδευω πολυ?

Παρακαλω οποιος ξερει ας απαντησει!

Ευχαριστώ

Απάντηση

Επιστροφή στο “MySQL”

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

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