Δημοσιεύτηκε: 30 Ιαν 2009, 03:33
kosvek έγραψε:Εγκατέστησα από την αρχή Ubuntu server 8.10 & Oracle σε Αγγλική έκδοση Linux. Έπειτα δημιουργησα τρεις databases βάζοντας διαδοχικά για character set: EL8ISO8859P7, EL8MSWIN1253 και AL32UTF8. Σε όλες τις περιπτώσεις εκτελώντας query σε table με ελληνικά, μου επιστρέφει ??????????????.
Η κωδικοποίηση ρυθμίζεται κατά τη δημιουργία μιας βάσης. Στην εγκατάσταση μπορεί να έχει μια επιλογή για το τι προεπιλογή να θέλεις, ωστόσο δεν είναι τόσο σημαντικό.
Σε κάθε περίπτωση, στη δημιουργία μιας νέας βάσης, βάζεις UTF-8. Κάθε άλλο θα είναι προβληματικό σε Linux.
Έπειτα, πρέπει να δεις 1) το τρόπο με τον οποίο εισάγεις κείμενο στη βάση, 2) το τρόπο που εξάγεις το κείμενο από τη βάση (ανάγνωση), και 3) το λογισμικό που εμφανίζει στην οθόνη το κείμενο που προήλθε από τη βάση.
Επειδή τα παραπάνω είναι κάπως περίπλοκα (διότι θα αναφερθείς σε εφαρμογές που μάλλον δεν γνωρίζω), είναι πιο βολικό να δημιουργήσεις κάποια πεδία με κείμενο στη βάση, να κάνεις εξαγωγή/εισαγωγή. Η Oracle επιτρέπει να κάνεις εξαγωγή σε αρχείο μορφής κειμένου; Αν ναι, μπορείς να βάλεις το κείμενο κάπου για να το δούμε. Μπορείς να πειράξεις το αρχείο εκείνο και να γράψεις με UTF-8, και μετά να δοκιμάσεις «εισαγωγή», και μετά ξανά εξαγωγή. Δηλάδη, μπορείς να δοκιμάσεις ένα σωρό πράγματα δίχως να μπαίνεις στις επιπλέον ιδιαιτερότητες του (3).
Ακόμα, αναφέρεις ότι το κείμενο εμφανίζεται ως «??????????????». Στους χαρακτήρες αυτούς βλέπεις να υπάρχουν διαστήματα; Είναι σημαντικό αυτό.
Όταν βλέπεις «???? ?????? ??», σημαίνει ότι η αρχική κωδικοποίηση που έλαβε το λογισμικό παρουσίασης είναι legacy (8-bit) και ότι συνέβει μια μετατροπή κατά την λήψη των δεδομένων όπου καταστράφηκαν τα δεδομένα. Η μετατροπή ήταν σε χαμηλό επίπεδο, οπότε το να προσπαθήσεις να αλλάξεις την κωδικοποίηση στο πρόγραμμα δε θα βοηθήσει.