random Δημοσ. 2 Οκτωβρίου 2002 Δημοσ. 2 Οκτωβρίου 2002 Εχω ενα πρόβλημα με τους ελληνικους χαρακτήρες. συγκεκριμένα, έχουμε μια βαση Oracle, εναν app/web server Oracle 9ias/Apache, και τον client me IE 5.5/6 σε win xp/2k. η βαση ειναι σεταρισμένη NLS_CHARACTERSET = EL8MSWIN1253 (encoding win-1253). o app server servirei jsp, στα οποια εχω χρησιμοποιήσει τα tags για iso encoding δηλ . </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">jsp tag <%@ page contentType="text/html;charset=WINDOWS-1253" %> kai to html tag <meta http-equiv="Content-Type" content="text/html;charset=WINDOWS-1253" />[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">(αυτά τα tags τα εχω δοκιμάσει και με ISO-8859-7, και πάλι έχει προβλημα, απλά βγάζει άλλο χαρακτήρα στο κεφαλαιο Αλφα τονούμενο, me win-1253 βγαζει απόστροφο () , με ISO-8859-7 βγάζει ερωτηματικό (?) ) Η jsp χρησιμοποει ενα bean, το οποιο παιρνει data απο τη βαση, με χρηση jdbc, και τα τα εμφανιζει σε html (ως κειμενο) ή σε javascript (ως alert). και φυσικά έχω προβλημα με το ελληνικό Κεφαλαίο Αλφα με Τόνο ( ʼ ), βγαίνει κινέζικο. κατι παρόμοιο πρόβλημα το εξηγεί εδώ ο φίλος http://www.cs.tut.fi/~jkorpela/unicode/greek.html οπου λέει οτι τα mapings των iso-8869-7 (το σωστό και επίσημο), διαφέρει απο το win-1253 (της κανω-οτι-γουσταρω Ms), στο συγκεκριμενο χαρακτήρα. Εγώ δεν μπορώ να καταλάβω σε ποιο σημειο της πορειας db - appserver - IE, γινεται η μετατροπή. Αφού ξεκινάει ως WINDOWS-1253 στη bαση, και ο client χρησιμοποιεί το ίδιο. στο bean χρησιμοποιω τον thin driver jdbc, φτιάχνω Statements, kai Preparedstatements, και παιρνω τα Strings με Resultset.getString(i); Μαλλον κατι κανει ο jdbc driver, αλλα δεν εχω βρει πουθενα σχετικα κειμενα για βοηθεια. Μηπως πρεπει να παίρνω αλλιως το String? ωστε να κανω καποιο conversion? Βέβαια υπάρχουν λύσεις (για μπακάληδες): 1. Δεν χρησιμοποιώ ʼ στα data 2. ψάχνω όλα τα strings για το ʼ, και το αλλαζω σε Ά Αλλα ψάχνω μια πιο σωστή λύση. Ευχαριστώ <small>[ 01-10-2002, 20:00: Το μήνυμα επεξεργάστηκε από: random ]</small>
apoc Δημοσ. 2 Οκτωβρίου 2002 Δημοσ. 2 Οκτωβρίου 2002 Prospathises kati tetoio? </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">String(byte[] bytes, String enc) Construct a new String by converting the specified array of bytes using the specified character encoding.[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">Den ksero an tha doulepsei...epishs den thimamai an yparxei kati idiaitero ston JDBC interface peri encoding .Eixa paromoia provlhmata se peripou idia katastash mono pou sthn dikh periptiosh oxi mono eprepe na kano allages sta data alla kai na formaro monos mou se epipedo data type....dhladh asta na pane...logika pantos o driver prepei na sou fernei ta data sosta ...to pos tha ta parousiaseis (in a way mallon einai thema tou kodika (bean) .
Γηρυόνης Δημοσ. 2 Οκτωβρίου 2002 Δημοσ. 2 Οκτωβρίου 2002 Δυστυχώς φίλε η M$ μας την έκανε πάλι... Το πρόβλημά σου είναι γνωστό και μη εξαιρετέο και μάλιστα έτυχε να αντιμετωπίσω και εγώ μία παρόμοια κατάσταση μερικούς μήνες πριν όπου οι σωστοί χαρακτήρες του ISO-8859-7 δεν αντιστοιχούσαν στους λάθους αυτούς των WIN-1253 (ως συνήθως άλλως τε). Να σου πω ότι η Java είναι εξ' ορισμού unicode και οι JDBC οδηγοί μετατρέπουνε το encoding της Java σε/από το encoding της βάσης. Αυτό που *πιστεύω* ότι συμβαίνει είναι ότι το πρόβλημα έγκειται στο στάδιο app. server - πλοηγός αλλά για να είμαστε σίγουροι θα σου πρότεινα αφού διαβάσεις τα δεδομένα από το ResultSet να τα σώσεις σε ένα αρχείο κειμένου το οποίο μπορείς να ανοίξεις με ένα κειμενογράφο (notepad/word) και να δεις αν οι χαρακτήρες φαίνονται εκεί καθαρά. Θα μπορούσες να το κάνεις και με System.out.println() αλλά το DOS παράθυρο είναι γνωστό ότι έχει πρόβλημα με πολλούς χαρακτήρες. Αν όντως το πρόβλημα είναι στον πλοηγό θα σου πρότεινα την "μπακάλικη" όπως λες και εσύ λύση να αντικαταστήσεις τους χαρακτήρες που θέλεις με την αντίστοιχη δεκαδική τους οντότητα όπως È <small>[ 02-10-2002, 14:08: Το μήνυμα επεξεργάστηκε από: Γηρυόνης ]</small>
random Δημοσ. 2 Οκτωβρίου 2002 Μέλος Δημοσ. 2 Οκτωβρίου 2002 </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">quote:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif">Originally posted by apoc: <strong>Prospathises kati tetoio? </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">String(byte[] bytes, String enc) Construct a new String by converting the specified array of bytes using the specified character encoding.[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif"></strong></font><hr /></blockquote><font size="2" face="Verdana, Helvetica, sans-serif">αυτο που γραφει ο apoc το έκανα για τα post parameters των html forms, που παίζουν μονο σε 8859-1, και τα μετατρεπω σε 1253. String x = request.getParameter("xxxx"); String enc1 = "ISO-8859-1"; String enc2 = "WINDOWS-1253"; x = new String(x.getBytes(enc1) ,enc2); Μεχρι που εβαλα ενα setting sto zone.properties του apache jserver και τωρα δεν χρειαζετε ουτε αυτο. Το ιδιο το δοκιμασα μεσα στο bean, και δεν κανει δουλειά. μαλιστα χαλάει ολο το string. τα περι unicode, δεν τα ηξερα.... θα δοκιμασω μεταtροπες απο/σε unicode. thanks, γι αυτά! άλλες ιδέες?
Γηρυόνης Δημοσ. 2 Οκτωβρίου 2002 Δημοσ. 2 Οκτωβρίου 2002 </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">quote:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif">Originally posted by random: <strong> άλλες ιδέες?</strong></font><hr /></blockquote><font size="2" face="Verdana, Helvetica, sans-serif">Πρώτα πρώτα ας ανακαλύψουμε που είανι το πρόβλημα... Είναι από βάση -> app. server ή από app. severr -> πλοηγό (όπως πιστεύω); Δοκίμασε αυτού που σου είπα με το αρχείο και πες μας.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.