|
Îåêßíçóå áðü ôï ìÝëïò xian_at. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 21-07-2005, 14:30. Υπάρχουν 17 απαντήσεις.
-
20-07-2005, 10:16
|
-
xian_at
-
-
-
Μέλος από τις 20-07-2005
-
-
Δημοσιεύσεις 14
-
-
|
Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Το προβλημα εντοπιζεται στην εισαγωγη στοιχειων απο .asp φορμα . Οι μεταβλητες εχουν σωστο περιεχομενο οταν για ελεγχο τις εμφανιζω στον explorer , κανω το insert στη βαση και στη συνεχεια απο τον enterprise manager κοιταω μεσα στον πινακα και παιρνω χαρακτιρες οτι να ναι! Η βαση πρεπει να περιεχει και ελληνικους και λατινικους χαρακτηρες και συγκεκριμενα εχω ενα πεδιο με περιγραφες οπου πρεπει να μπαινουν και οι δυο γλωσσες. Επισης εχω ακομα ενα προβληματακι με τον enterprise manager... οταν κανω καποια αλλαγη στα properties της βασης ,οπως για παραδειγμα η αλλαγη της default γλωσσας για users, παταω ok στην καρτελα ,το παραθυρο κλεινει αλλα δεν γινεται κατι...ανοιγωντας ξανα το property window της βασης ολα ειναι οπως πριν σαν να μην τα εχω πειραξει!
το συστημα ειναι : windows 2003 small business server , IIS 6.0, mssql server 2000,
ευχαριστω για το χρονο σας
|
|
-
20-07-2005, 11:09
|
-
xian_at
-
-
-
Μέλος από τις 20-07-2005
-
-
Δημοσιεύσεις 14
-
-
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
το σειριαλ συνεχιζεται....αλλαξα πειραματιζομενος το πεδιο που με ενδιαφερει σε nvarchar. εκανα εισαγωγη στοιχειων απο το παραθυρο που ανοιγει αν κλικαρουμε στον πινακα δεξι κλικ > return all rows και τα πηρε κανονικα τα ελληνιικα...μεσω web συνεχιζει να αρνειται...
|
|
-
20-07-2005, 12:02
|
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Να προτείνω να βάζεις και τόνους? Είναι απίστευτα κουραστικό να διαβάζεις κείμενο χωρίς τόνους.
Ειδικά αν σκεφτείς ότι όσοι απαντάμε το κάνουμε ενώ κάνουμε και πολλές άλλες δουλειές (δες το Ζαχαρία για να καταλάβεις), υπάρχει κίνδυνος να αφήσουμε όσα posts είναι γραμμένα με λατινικούς χαρακτήρες, με κεφαλαία ή χωρίς τόνους "για αργότερα". Όταν όμως έρθει το αργότερα, π.χ. όταν γυρίσουμε σπίτι, προκύπτουν ένα σωρό πιο ενδιαφέροντα πράγματα, πχ. να πάμε σε ένα θερινό, να βγούμε για καφέ και γενικώς πράγματα προτιμότερα από το να διαβάσουμε ένα δυσανάγνωστο κείμενο. Οπότε η πιθανότητα να σου απαντήσουμε μειώνεται.
Άσε που μετά δεν δουλεύει και το search!
Παναγιώτης Καναβός, Freelancer Twitter: http://www.twitter.com/pkanavos
|
|
-
20-07-2005, 12:18
|
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Το πρόβλημα έχει να κάνει με τις asp σελίδες, όχι τον SQL Server. Οι asp σελίδες πρέπει να έχουν κάποιο καρφωτό encoding που δημιουργεί το πρόβλημα. Δες το http://www.dotnetzone.gr/cs/forums/3003/ShowPost.aspx για μια αντίστοιχη περίπτωση.
Γενίκά είναι προτιμότερο να αποθηκεύεις το κείμενο σαν unicode για να μην χρειάζεται να ασχολείσαι με το codepage κάθε πεδίου, του client, του web server και όλα τα περίεργα. Βάζε πάντα nvarchar, nchar, ntext αντί για varchar, char, text.
Τέλος, όταν αντιμετωπίζεις τέτοια προβλήματα μην τρέχεις να αλλάξεις τα settings του SQL Server ή του IIS ή των Windows, γιατί και το πρόβλημα δεν θα λύσεις αλλά και θα δημιουργήσεις καινούρια. Τόσο ο SQL Server, ο IIS, το .NET αλλά και η VB6 κάνουν πολύ καλή δουλειά στο να αναγνωρίζουν τη γλώσσα που χρησιμοποιεί ο server, ο client και να κάνουν τις μετατροπές. Τα προβλήματα αρχίζουν όταν κάποιος προσπαθήσει να βάλει τη γλώσσα καρφωτά, ή να χρησιμοποιήσει ASCII χαρακτήρες χωρίς να λάβει υπόψη τα codepages
Παναγιώτης Καναβός, Freelancer Twitter: http://www.twitter.com/pkanavos
|
|
-
20-07-2005, 12:25
|
-
xian_at
-
-
-
Μέλος από τις 20-07-2005
-
-
Δημοσιεύσεις 14
-
-
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
δεν υπάρχει πρόβλημα μπορώ και με τόνους!! μιάς και μπήκες στον κόπο να το διαβάσεις μήπως έχεις και καμία καλή ιδέα ; Το πάρε - δώσε με τη βάση είναι ακατόρθωτο...μήπως παίζει πρόβλημα με τον IIS.. ;
|
|
-
20-07-2005, 13:02
|
-
xian_at
-
-
-
Μέλος από τις 20-07-2005
-
-
Δημοσιεύσεις 14
-
-
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
από αυτά που διάβασα στα topic που με έστειλες τσέκαρα το web.config να εχει utf-8 , άλλαξα όλα τα πεδία να είναι nvarchar , δοκίμασα να βάλω αυτό το Ν μπροστά από τα values στο insert αλλά μου βγάζει ένα error στο τέλος του insert (ή στην εντολή Execute που είναι η επόμενη) . Στέλνω το encoding που χρησιμοποιώ στα .asp και τον κώδικα που χτυπάει..υπάρχει κατι άλλο να δοκιμάσω ;
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7">
<% ' Add New Product IF addProduct <> "" THEN
sqlString = "INSERT INTO Products " &_ "( product_id,product_name, product_price, product_picture, " &_ "product_category, product_briefdesc, product_fulldesc, " &_ "product_status ) VALUES (N" &_ " 1121," &_ " '" & productName & "', " &_ productPrice & ", " &_ " '" & productPicture & "', " &_ " '" & productCategory & "', " &_ " '" & productBriefDesc & "', " &_ " '" & productFullDesc & "', " &_ productStatus & " )"
Con.Execute sqlString
%>
|
|
-
20-07-2005, 13:38
|
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Το sqlstring υποφέρει λιγάκι. Αν βάλεις τιμές θα σου βγει:
INSERT INTO Products ( product_id,product_name, product_price, product_picture, product_category, product_briefdesc, product_fulldesc, product_status ) VALUES (N 1121, 'Ραδίκια', 34,5 , 'myprod.gif', 'Λαχανικά', 'Τα βράζεις και τα τρως', 'Και ονειρεύεσαι μπριζόλες', Ενεργό )
αντί
INSERT INTO Products ( product_id,product_name, product_price, product_picture, product_category, product_briefdesc, product_fulldesc, product_status ) VALUES (1121, N'Ραδίκια', '34,5' , 'myprod.gif', N'Λαχανικά', N'Τα βράζεις και τα τρως', N'Και ονειρεύεσαι μπριζόλες', N'Ενεργό')
Η καλύτερη λύση για να αποφύγεις τέτοια προβλήματα είναι να φτιάξεις ένα stored procedure που θα παίρνει τις παραμέτρους που θες. Αν δεν θέλεις να φτιάξεις stored procedure, φτιάξε τουλάχιστον ένα command που θα δέχεται τις παραμέτρους και θα έχει σαν CommandText το:
INSERT INTO Products ( product_id,product_name, product_price, product_picture, product_category, product_briefdesc, product_fulldesc, product_status ) VALUES (@product_id, @product_name, @product_price, @product_picture, @product_category, @product_briefdesc, @product_fulldesc, @product_status )
Παναγιώτης Καναβός, Freelancer Twitter: http://www.twitter.com/pkanavos
|
|
-
20-07-2005, 14:16
|
-
xian_at
-
-
-
Μέλος από τις 20-07-2005
-
-
Δημοσιεύσεις 14
-
-
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Στο insert μπαίνουν τιμές από textboxes φόρμας asp, γι' αυτό και είπα να το φτιάξω έτσι... Το μετέτρεψα σε αυτή τη μορφή :
sqlString = "INSERT INTO Products ( product_id,product_name, product_price, product_picture,product_category, product_briefdesc, product_fulldesc,product_status ) VALUES (1123,N'" & productName & "',"& productPrice & ",'" & productPicture & "',N'" & productCategory & "',N'" & productBriefDesc & "',N'" & productFullDesc & "'," & productStatus & " )"
Con.Execute sqlString
δεν δείχνει να λειτουργεί με ελληνικά όμως..... Είμαστε σίγουροι οτι δεν φταίει το :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7"> ??
επίσης οταν εβαλα καρφωτά τιμές με ελληνικά στον πίνακα ο explorer μου τα εμφάνισε "???????" (χρησιμοποιωντας το ιδιο <meta.... ... ... ... charset=iso-8859-7"> )
επισης μήπως παίζει κανένα θέμα collation ? όχι οτι ξέρω τι είναι...αλλά είδα πολλές αναφορές στο net
|
|
-
20-07-2005, 14:28
|
-
Aris
-
-
-
Μέλος από τις 16-06-2004
-
-
Δημοσιεύσεις 124
-
-
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Όχι string concatenation με δεδομένα από τον χρήστη.
SQL Injection και άλλα καταστροφικά. Εφάρμοσε την λύση του αναφέρει ο pkanavos (που είναι ο σωστός τρόπος).
Ως προς τα ερωτηματικά στον IE, εάν αλλάξεις το encoding, τα δείχνει σωστά;
Άρης
Aris
|
|
-
20-07-2005, 15:28
|
-
xian_at
-
-
-
Μέλος από τις 20-07-2005
-
-
Δημοσιεύσεις 14
-
-
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
1.άλλαξα το encoding απο iso...etc...etc και έβαλα δοκιμαστικά utf-8 και μου έβγαλε κάτι κινέζικα...
2. αφαίρεσα τα 3 κιλά κώδικα και έτρεξα αυτό το scriptάκι που βάζει μέσω .asp αυτήν την εγγραφή και μπήκε κανονικά......χρειάζομαι όμως μια φόρμα για να εισάγω στοιχεία...προτείνετε να φτιάξω ενα sub? όμως και πάλι δεν θα πρέπει να πάρει παραμετρικά το insert τιμές? κάποια λύση με άλλο τρόπο για αυτό? αλλιώς , πως μπορώ να δώσω παραμετρικά τιμές ( στα ελληνικά!! ) με σωστό τρόπο??
<% Set Con = Server.CreateObject( "ADODB.Connection" ) Con.Open "ONLINEDSN","reader","qwerty" sqlString = "INSERT INTO Products ( product_id,product_name, product_price, product_picture,product_category, product_briefdesc, product_fulldesc,product_status ) VALUES (9993,N'ονομα',666,'/store/kati',N'κατηγορια_προιοντος',N'μικρη περιγραφη προιοντος',N'μεγαααααααααλη περιγραφη προιοντος',1)" Con.Execute sqlString %>
|
|
-
20-07-2005, 17:02
|
-
anjelinio
-
-
-
Μέλος από τις 21-06-2005
-
-
Δημοσιεύσεις 571
-
-
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Δεν είμαι καθόλου σίγουρος για την ορθότητα αυτής της απάντησης, αλλά ...
Μήπως το encoding του Response ΔΕΝ είναι το σωστό, ή αυτό
που θα περίμενες; Δοκίμασες στην αρχή της σελίδας σου να το θέτεις εσύ
στο property του Response, στον asp κώδικά σου;
Το ότι το script σου με "καρφωτές" τιμές παίζει κανονικά, αλλά με τις
τιμές απ'τη φόρμα δεν παίζει, με σπρώχνει προς την παραπάνω υπόθεση ...
Angel O:]
|
|
-
20-07-2005, 18:59
|
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Εκτός από το encoding της ίδιας της σελίδας, άλλαξε και το encoding στο web.config ώστε να ταιριάζουν.
<system.web> <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> </system.web>
Χρήστος Γεωργακόπουλος
|
|
-
20-07-2005, 20:48
|
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
cgeo wrote: |
Εκτός από το encoding της ίδιας της σελίδας, άλλαξε και το encoding στο web.config ώστε να ταιριάζουν.
<system.web> <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> </system.web>
|
|
Το πρόβλημα αναφέρεται σε asp. Οπότε το web.config και UTF-8 είναι εκτός "σεναρίου"...
Νομίζω ότι το πρόβλημα κινήται προς την μεριά που το θέτει ο anjelinio. To τι γράφεται μέσα στην βάση και το τί φαίνεται μέσα στην .asp σελίδα έχει να κάνει καθαρά με το encoding της σελίδας .asp, και το locale που τρέχει στη συνέχεια το όλο context.
Έτσι το locale μπορεί να καθοριστεί είτε από το meta tag μέσα από τον HTML κώδικα της σελίδας, είτε από το Response.Encoding μέσα από τον .asp κώδικα. Αν και στην συγκεκριμένη περίπτωση το πρόβλημα πρέπει να προέρχεται από το context locale που τρέχει η σελίδα, που πάω στοίχημα στην σελίδα εν λόγω πάνω πάνω έχει γραμμένο <%@ Language=VBScript LCID=1032 %>, που την κάνει να τρέχει σε en-US και άντε να γράψεις με αυτό ελληνικά... ![Big Smile [:D]](/cs/emoticons/emotion-2.gif)
George J.
|
|
-
20-07-2005, 21:33
|
-
cap
-
-

-
Μέλος από τις 14-01-2005
-
Βύρωνας, Αθήνα
-
Δημοσιεύσεις 2.750
-
-
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Αρη, οσον αφορά στους κινδύνους που έχει το string concatenation έχεις δίκιο. Θα έλεγα όμως να βοηθήσουμε το συνάδελφό μας να λύσει το πρόβλημα με τα Ελληνικά του και μετά θα πρότεινα να συζητήσουμε αναλυτικά (γιατί υποψιάζομαι οτι και άλλοι συνάδελφοι ίσως αντιμετωπίζουν παρόμοια θέματα) τα προβλήματα που έχει το string concatenation. Θα ήθελες, αν έχεις βέβαια χρόνο, να γράψεις κάποιο σχετικό άρθρο; Θα ήταν πιστεύω χρήσιμο με παραδείγματα SQL Injection κλπ.
Οσο για αυτό που υποψιάζεται ο Γιώργος, έχω και εγώ την ίδια ακριβώς υποψία. Ειδικά αν η σελίδα έχει φτιαχτεί με κάτι σαν Visual Studio 6...ή κάποια άλλη εφαρμογή η οποία βάζει αυτά τα πράγματα πανω πανω...
Σωτήρης Φιλιππίδης DotSee Web Services
|
|
-
21-07-2005, 11:25
|
-
xian_at
-
-
-
Μέλος από τις 20-07-2005
-
-
Δημοσιεύσεις 14
-
-
|
Απ:Ελληνικα σε SQL server 2000 (μη βαράτε είμαι αρχάριος)
Για την εισαγωγή των δεδομένων χρησιμοποιώ μια φόρμα html με ενα method POST. Έκανα ένα τεστάκι με τον παρακάτω κώδικα ...
productName = Request( "productName" ) response.write(productName)
το αποτέλεσμα ήταν οτι το όνομα είχε σταλθεί κανονικά απο το αρχείο addproducts.asp που έχει την hml φόρμα και εμφανίστηκαν μια χαρά τα ελληνικά...εάν το encoding ήταν λάθος δεν θα έπρεπε να δείξει και αυτό αρμένικα?? Το web.config φαίνεται να είναι σωστό...είναι utf-8 Δεν υπάρχει κάτι τέτοιο <%@ Language=VBScript LCID=1032 %> στον κώδικα μέσα...
|
|
Σελίδα 1 από 2 (18 εγγραφές)
1
|
|
|