Πρόβλημα με Ελληνικά στην oracle 11g

...IDE, compilers, κλπ

Συντονιστής: konnn

Re: Πρόβλημα με Ελληνικά στην oracle 11g

Δημοσίευσηαπό kosvek » 01 Φεβ 2009, 09:41

Συγνώμη που άργησα να απαντήσω αλλά έλλειπα εκτός Αθηνών δύο μέρες. Λοιπόν μετά από όλα αυτά έβαλα παντού UTF8 στον Linux server και σαν γλώσσα επέλεξα την ελληνική. Υπήρχε και μια μεταβλητή περιβάλλοντος NLS_LANG την οποία όρισα GREEK_GREECE.AL32UTF8. Μετά από αυτά πράγματι είδα ελληνικά στο Linux και από το win client έπεξαν τα ελληνικά τόσο από sql developper όσο και από το sqlplus για DOS όπου για το τελευταίο έδωσα πρώτα την εντολή από dos: set NLS_LANG=GREEK_GREECE.EL8PC737. Όμως το βασικό μου πρόβλημα εξακολουθεί να υπάρχει αφου από το client δεν μπορώ να δώ ελληνικά μέσω ODBC σύνδεσης με τη βάση. Θα κάνω και σήμερα κάποιες δοκιμές και θα επιστρέψω με νεότερα. Πάντως σας ευχαριστώ όλους για τις υποδείξεις σας. Είμαι νέος στο forum και είμαι εντυπωσιασμένος.
Τελευταία επεξεργασία από kosvek και 04 Φεβ 2009, 23:11, έχει επεξεργασθεί 2 φορά/ες συνολικά
Γνώσεις ⇛ Linux: Πολύ καλά ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Gnome Ubuntu 14.04 64bit (gnome 3.12.2) | Laptop Sony Vaio
Προδιαγραφές ⇛ Intel® Core™ i3 CPU M 370 @ 2.40GHz × 4 │ 8GB RAM │ ATI Radeon HD 5650
kosvek
babeTUX
babeTUX
 
Δημοσιεύσεις: 24
Εγγραφή: 24 Ιαν 2009, 00:46
Εκτύπωση

Re: Πρόβλημα με Ελληνικά στην oracle 11g

Δημοσίευσηαπό kosvek » 01 Φεβ 2009, 13:35

Το πρόβλημα που έχω εντοπίσει βρίσκεται μάλλον στο ότι ο odbc driver της oracle δεν διαβάζει το πεδίο NLS_LANG από τη registry των win. Αυτό γιατί στην εφαρμογή DOS που δίνει η oracle και λέγεται sqlplus για χρήση από windows, βλέπω κανονικά τα ελληνικά αν ορίσω σωστά την μεταβλητή περιβάλλοντος NLS_LANG=GREEK_GREECE.EL8PC737. Με οποιαδήποτε άλλη τιμή εκτός από αυτή μου βγάζει ερωτηματικά. Επίσης στον Linux Server από τερματικό με sqlplus αν ορίσω τη μεταβλητή περιβάλλοντος NLS_LANG=GREEK_GREECE.AL32UTF8 βλέπω κανονικά τα ελληνικά από select command. Οτιδήποτε και αν βάλω στη registry στο πεδίο NLS_LANG το αποτέλεσμα είναι να βλέπω τα ελληνικά με <<συνεχόμενα>> ερωτηματικά, ένα για κάθε ελληνικό χαρακτήρα που καταχώρησα. Το πρόγραμμα που εκτελώ τις sql εντολές από windows είναι ένα odbc client (admndemo.exe). Με αυτό συνδέομαι με τον Linux server μέσω τοπικού δικτύου.
ΥΓ. Κάνω κάθε φορά restart τη registry(TaskManager->explorer.exe stop, start). Δεν ξέρω τι άλλο να δοκιμάσω.
Γνώσεις ⇛ Linux: Πολύ καλά ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Gnome Ubuntu 14.04 64bit (gnome 3.12.2) | Laptop Sony Vaio
Προδιαγραφές ⇛ Intel® Core™ i3 CPU M 370 @ 2.40GHz × 4 │ 8GB RAM │ ATI Radeon HD 5650
kosvek
babeTUX
babeTUX
 
Δημοσιεύσεις: 24
Εγγραφή: 24 Ιαν 2009, 00:46
Εκτύπωση

Re: Πρόβλημα με Ελληνικά στην oracle 11g

Δημοσίευσηαπό simosx » 01 Φεβ 2009, 16:46

Για το ζήτημα περί DOS, το μόνο που μπορώ να πω είναι ότι νομίζω ότι δεν υποστηρίζει Unicode, οπότε χρειάζεται τρόπος μετατροπής μεταξύ Unicode<->legacy encoding. Υπάρχει διαδικασία, ωστόσο αν δεν είναι απολύτως αναγκαίο, άφησέ το ;-).

Σε Windows, υπάρχει μπάχαλο για τις κωδικοποιήσεις. Όταν βλέπεις τους χαρακτήρες να έχουν ανάμεσά τους κάτι άσχετα γράμματα, π.χ. Μ'Ι'Α''Δ'Ο'Κ'Ι'Μ'Η, τότε σημαίνει ότι έγινε μια λάθος μετατροπή προς UTF-16.

Αναφέρθηκες σε κάποιο πρόγραμμα demo. Είναι πιθανό να είναι hardcoded σε windows-1251, οπότε καλύτερα άφησέ το.

Αυτό που χρειάζεσαι σε Windows είναι
α. να χρησιμοποιήσεις λογισμικό/ODBC/κτλ που να κάνει αυτόματη μετατροπή μεταξύ UTF-8 και UTF-16. Εδώ ψάχνεις στο διαδίκτυο με π.χ. UTF-8 UTF16 ODBC conversion
Τα UTF-8 και UTF-16 μπορούν να μετατραπούν από το ένα στο άλλο δίχως πρόβλημα.
β. ή να βρεις πρόγραμμα σε Windows που να λειτουργεί ήδη σε UTF-8. Π.χ. κάποια εφαρμογή σε GTK+.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Πρόβλημα με Ελληνικά στην oracle 11g [ΕΠΙΛΥΘΗΚΕ]

Δημοσίευσηαπό kosvek » 04 Φεβ 2009, 23:03

Αρχικά απεγκατέστησα την oracle 11g από τον linux server (Ubuntu 8.10 server) και έβαλα την 10.2g. Στον server κατά την δημιουργία της βάσης, έβαλα character set: EL8ISO8859P7, αφήνοντας όλα τα υπόλοιπα default. Στον win xp client εγκατέστησα το oracle client για 10.2. Όρισα την μεταβλητή περιβάλλοντος στα win XP, NLS_LANG, όχι στην registry αλλά: Ο υπολογιστής μου -> Ιδιότητες -> Για προχωρημένους -> Mεταβλητές περιβάλλοντος -> Μεταβλητές συστήματος -> Δημιουργία. Στο όνομα μεταβλητής: NLS_LANG και περιεχόμενο: AMERICAN_AMERICA.EL8MSWIN1253. Στον Linux server πρέπει να δίνουμε: export NLS_LANG=GREEK_GREECE.AL32UTF8, πριν μπούμε στο sqlplus της oracle. Και επιτέλους τα ελληνικά φαίνονται κανονικά παντού τόσο στο Linux όσο και στα Windows.
Σας ευχαριστώ όλους για τις χρήσιμες συμβουλές σας.
Είμαι καθηγητής πληροφορικής και στο σχολείο μου έχω βάλει παντού Ubuntu. Όλα τα μαθήματα γίνονται πάνω σε αυτό και υπάρχει πολύς ενθουσιασμός από τα παιδιά. (Openoffice, Gimp , fpc(pascal), kturtle, compize->περιστρεφόμενοι κύβοι κλπ).
Γνώσεις ⇛ Linux: Πολύ καλά ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Gnome Ubuntu 14.04 64bit (gnome 3.12.2) | Laptop Sony Vaio
Προδιαγραφές ⇛ Intel® Core™ i3 CPU M 370 @ 2.40GHz × 4 │ 8GB RAM │ ATI Radeon HD 5650
kosvek
babeTUX
babeTUX
 
Δημοσιεύσεις: 24
Εγγραφή: 24 Ιαν 2009, 00:46
Εκτύπωση

Re: Πρόβλημα με Ελληνικά στην oracle 11g [ΕΠΙΛΥΘΗΚΕ]

Δημοσίευσηαπό linuxman » 04 Φεβ 2009, 23:10

kosvek έγραψε:Αρχικά απεγκατέστησα την oracle 11g από τον linux server (Ubuntu 8.10 server) και έβαλα την 10.2g. Στον server κατά την δημιουργία της βάσης, έβαλα character set: EL8ISO8859P7, αφήνοντας όλα τα υπόλοιπα default. Στον win xp client εγκατέστησα το oracle client για 10.2. Όρισα την μεταβλητή περιβάλλοντος στα win XP, NLS_LANG, όχι στην registry αλλά: Ο υπολογιστής μου -> Ιδιότητες -> Για προχωρημένους -> Mεταβλητές περιβάλλοντος -> Μεταβλητές συστήματος -> Δημιουργία. Στο όνομα μεταβλητής: NLS_LANG και περιεχόμενο: AMERICAN_AMERICA.EL8MSWIN1253. Στον Linux server πρέπει να δίνουμε: export NLS_LANG=GREEK_GREECE.AL32UTF8, πριν μπούμε στο sqlplus της oracle. Και επιτέλους τα ελληνικά φαίνονται κανονικά παντού τόσο στο Linux όσο και στα Windows.
Σας ευχαριστώ όλους για τις χρήσιμες συμβουλές σας.
Είμαι καθηγητής πληροφορικής και στο σχολείο μου έχω βάλει παντού Ubuntu. Όλα τα μαθήματα γίνονται πάνω σε αυτό και υπάρχει πολύς ενθουσιασμός από τα παιδιά. (Openoffice, Gimp , fpc(pascal), kturtle, compize->περιστρεφόμενοι κύβοι κλπ).

Μπράβο σου .
Αυτό καλό είναι ότι τους άρεσε άρα έχουμε ελπίδα ότι θα το μάθουν .
Οδηγίες προς Νεοεισερχόμενους
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Linux Mint 17.1 Rebecca 3.13.0-37-generic 64bit (el_GR.UTF-8, X-Cinnamon cinnamon)
3 Intel Core i5-2310M CPU @ 2.10GHz ‖ RAM 3866 MiB ‖ Dell Inc. 0D7C51 - Dell Inc. Dell System Vostro 3750
4 Intel 2nd Generation Core Processor Family Integrated Graphics [8086:0116] {i915}
5 wlan0: Intel Centrino Wireless-N 1030 [Rainbow Peak] [8086:008a] (rev 34) ⋮ eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 06)
http://www.greeklug.gr
Άβαταρ μέλους
linuxman
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10378
Εγγραφή: 10 Μάιος 2008, 20:41
Τοποθεσία: Thessaloniki / Macedonia / Greece
Εκτύπωση

Re: Πρόβλημα με Ελληνικά στην oracle 11g

Δημοσίευσηαπό stelarapas » 06 Αύγ 2009, 21:40

Επειδη ασχολουμαι τα τελευταια 19 χρονια με Oracle, απτο τη εποχη του OS2 με ver.2.1, θελω να σας πω οτι
το μοναδικο NLS_LANG που δουλευει καλα ειναι το: AMERICAN_AMERICA.EL8ISO8859P7, τοσο σε Win οσο και σε Linux.

Αν εχετε "χτισει" βαση με διαφορετικο NLS_LANG, μπορειτε να το διορθωσετε, χωρις να χρειαστει να την "γκρεμισετε".
Για οποιον ενδιαφερεται, ας κανει post και θα του στειλω το trick.
stelarapas
babeTUX
babeTUX
 
Δημοσιεύσεις: 1
Εγγραφή: 06 Αύγ 2009, 21:17
Εκτύπωση

Re: Πρόβλημα με Ελληνικά στην oracle 11g

Δημοσίευσηαπό linuxman » 06 Αύγ 2009, 23:48

stelarapas έγραψε:Επειδη ασχολουμαι τα τελευταια 19 χρονια με Oracle, απτο τη εποχη του OS2 με ver.2.1, θελω να σας πω οτι
το μοναδικο NLS_LANG που δουλευει καλα ειναι το: AMERICAN_AMERICA.EL8ISO8859P7, τοσο σε Win οσο και σε Linux.

Αν εχετε "χτισει" βαση με διαφορετικο NLS_LANG, μπορειτε να το διορθωσετε, χωρις να χρειαστει να την "γκρεμισετε".
Για οποιον ενδιαφερεται, ας κανει post και θα του στειλω το trick.

Μιας και το ξέρεις το τρικ και δεν είναι κρατικό μυστικό δεν κάνεις εάν μικρό οδηγό για εγκατάσταση μίας και βάσης και το τρικ με αυτά που ξέρεις .
Οδηγίες προς Νεοεισερχόμενους
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Linux Mint 17.1 Rebecca 3.13.0-37-generic 64bit (el_GR.UTF-8, X-Cinnamon cinnamon)
3 Intel Core i5-2310M CPU @ 2.10GHz ‖ RAM 3866 MiB ‖ Dell Inc. 0D7C51 - Dell Inc. Dell System Vostro 3750
4 Intel 2nd Generation Core Processor Family Integrated Graphics [8086:0116] {i915}
5 wlan0: Intel Centrino Wireless-N 1030 [Rainbow Peak] [8086:008a] (rev 34) ⋮ eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 06)
http://www.greeklug.gr
Άβαταρ μέλους
linuxman
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10378
Εγγραφή: 10 Μάιος 2008, 20:41
Τοποθεσία: Thessaloniki / Macedonia / Greece
Εκτύπωση

Re: Πρόβλημα με Ελληνικά στην oracle 11g [ΕΠΙΛΥΘΗΚΕ]

Δημοσίευσηαπό PaNick » 07 Οκτ 2009, 22:47

Έχουμε και λέμε (συγγνώμη προκαταβολικά για το μεγάλο post):

Πρώτα λίγη θεωρία: τo encoding-codepage είναι η 2η παράμετρος στη μεταβλητή περιβάλλοντος NLS_LANG π.χ. AMERICAN_AMERICA.EL8ISO8859P7 To 1ο μέρος (πριν την τελεία) αφορά τη γλώσσα με την οποία θα επικοινωνεί η Oracle στα μυνήματα (λάθους, πληροφόρησης, οτιδήποτε) που στέλνει στον client. Προτείνω το AMERICAN_AMERICA μιας και τα ελληνικά υστερούν. To EL8ISO8859 στη συγκεκριμένη περίπτωση είναι το encoding και το Ρ7 είναι η κωδικοσελίδα.

Αν είσαι στο DOS, εννοείτε ότι πρέπει να θέσεις τη μεταβλητή περιβάλλοντος σε κάθε command prompt που ανοίγεις, ενώ στα windows το πρόγραμμα θα το διαβάσει από τη registry κάτω από το ORACLE_HOME που χρησιμοποιεί (κάθε εγκατάσταση by default πάει σε δικό της, εκτός κι αν το θέσεις εσύ ρητά).

Πάμε στο ζουμί:
Από τη βάση μέχρι το πληκτρολόγιο σου (που πατάς κουμπιά και μπαίνουν δεδομένα) παρεμβάλλονται:
1. client-πρόγραμμα που γίνεται η καταχώρηση των δεδομένων
2. oracle client που τα στέλνει στη βάση (χρησιμοποιεί το NLS_LANG κατά τη διασύνδεσή του με τη βάση ώστε η τελευταία να μεταφράζει σωστά τα δεδομένα που της στέλνει ο client-πρόγραμμα).
3. βάση που τα δέχεται

Για να αποθηκεύονται τα δεδομένα σωστά πρέπει ο 2 να έχει το σωστό encoding/codepage. Ήτοι, αν είσαι σε windows client (π.χ. Oracle SQL Developer, TOAD, PL/SQL Developer ή οποιαδήποτε windows εφαρμογή γράψετε στο σχολείο) τότε - πιθανότατα - γράφεις σε Win1253 και μια χαρά επίσης θα μπορείς να γράψεις και ISO8859P7. Για να έχεις ορίσει το κατάλληλο encoding θα βάλεις - registry - EL8MSWin1253 στο NLS_LANG σου και είσαι κούκλος. Προσοχή, γιατί αν δε χρησιμοποιείς Windows client, π.χ. sqlplus μέσα από DOS τότε στέλνεις χαρακτήρες απέναντι, όχι σε win1253 αλλά σε DOS CP437G οπότε και χρειάζεσαι άλλο NLS_LANG (το κατάλληλο για DOS - σόρυ δεν το ξέρω και νομίζω πως υπάρχουν πολλοί καλύτεροι τρόποι για να κάνεις data entry αντί να γράφεις σε DOS παράθυρο :-) Αυτό είναι που θέτεις με τη μεταβλητή περιβάλλοντος που αναφέρεις στο τελευταίο σου post.)

To NLS_LANG της βάσης δε σε απασχολεί γιατί ο oracle client θα φροντίσει να κάνει - θεωρητικά - τη σωστή μετάφραση. Η πράξη λέει ότι στην περίπτωσή σου μπορείς άνετα να βάλεις EL8MSWIN1253 ή ISO8859P7 για να έχεις και οικονομία στα δεδομένα και καθόλου μετάφραση.Εννοείται ότι τα υπερσύνολα αυτών (AL32, UTF8, 16 κλπ) σε υπερκαλύπτουν, χωρίς να είναι αναγκαία.

Από τη βάση πάλι, μέχρι την οθόνη σου που βλέπεις τα δεδομένα παρεμβάλλονται:
1. βάση που τα έχει
2. oracle client που τα παίρνει από τη βάση (χρησιμοποιεί το NLS_LANG κατά τη διασύνδεσή του με τη βάση ώστε η τελευταία να μεταφράζει σωστά τα δεδομένα που στέλνει στο client-πρόγραμμα).
3. client-πρόγραμμα που χρησιμοποιεί γραμματοσειρά για να δείχνει τα δεδομένα.

Και πάλι για να μπορείς να τα βλέπεις πρέπει αφενός να ΄χεις σωστό NLS_LANG στο #2 ώστε να ΄ρχονται μέχρι τον client-πρόγραμμα σωστά αλλά και αντίστοιχη γραμματοσειρά που να μπορεί να τα δείξει αφού έρθουν. Π.χ. αν βλέπεις από windows τότε ισχύουν τα παραπάνω, ενώ αν βλέπεις από Linux χρειάζεσαι το κατάλληλο (νομίζω είναι το EL8ISO8859P7) αλλά και συμβατή γραμματοσειρά.

Για παραπάνω, δες το manual της Oracle:
http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm

just my 2 cents.

Συγγνώμη για την καθυστερημένη απάντηση.

ΥΓ:
kosvek έγραψε:Είμαι καθηγητής πληροφορικής και στο σχολείο μου έχω βάλει παντού Ubuntu.

Πώς έχεις βάλει παντού Ubuntu αφού όλοι βλέπουν από windows τον Oracle server;
PaNick
babeTUX
babeTUX
 
Δημοσιεύσεις: 60
Εγγραφή: 26 Δεκ 2008, 14:05
Εκτύπωση

Re: Πρόβλημα με Ελληνικά στην oracle 11g

Δημοσίευσηαπό chalkomatas » 29 Νοέμ 2021, 13:28

Καλημέρα σε όλους παιδιά,

Αν και παλιό αυτό το thread, είναι πολύ σχετικό με αυτό που προσπαθώ να κάνω. Θέλω να εγκαταστήσω την oracle (οποιαδήποτε version) σε περιβάλλον ubuntu. Το έχω καταφέρει ήδη με σχετική δυσκολία σε άλλες συμβατές διανομές (πχ centos 8), αλλά αποτυγχάνω να το καταφέρω σε ubuntoειδείς (πχ ακολούθησα αυτό τον οδηγό) χωρίς να τα καταφέρω, αν και συνεργάστηκα και με το άτομο που το δημιούργησε μέσω facebook. Μάλιστα έκανε και κάποιες διορθώσεις με βάση στα σφάλματα που του έστελνα με screenshots, αλλά τελικά δεν τα καταφέραμε και απλά τον ευχαρίστησα για τον κόπο του. Aκολούθησα μια πιο απλή λύση, την εγκατάσταση της oracle σε περιβάλλον virtual box ακολουθώντας αυτό, και του oracle sql developer στο host για να παίζω με τη βάση.

Αυτό λειτουργεί, αλλά σε λίγο καιρό θα στήσω έναν ubuntu server και θα χρειαστεί να βάλω την oracle απευθείας επάνω στο λειτουργικό. Μήπως υπάρχει κάποιος δοκιμασμένος οδηγός ή γνωρίζει κάποιος να με καθοδηγήσει;

Ευχαριστώ!
Γνώσεις ⇛ Linux: Αρχάριος ┃ Προγραμματισμός: Μέτριο┃ Αγγλικά: Άριστα
Λειτουργικό ⇛ Ubuntu Server/CENTOS/Linux Mint/Windows 10 Professional
Προδιαγραφές ⇛ Intel(R) Core i5-2500K │P67A-D3-B3 motherboard │8 GB RAM DDR3 1600MHz │NVIDIA GeForce GT520 vga controller │ Monitor LG FLATRON L1942SE │
chalkomatas
babeTUX
babeTUX
 
Δημοσιεύσεις: 66
Εγγραφή: 21 Ιαν 2009, 19:50
Εκτύπωση

Προηγούμενη

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Εφαρμογές για Ανάπτυξη Λογισμικού

cron