Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα με Post Ελληνικών από Access

Îåêßíçóå áðü ôï ìÝëïò Tourle. Τελευταία δημοσίευση από το μέλος Tourle στις 18-03-2011, 21:42. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-03-2011, 18:19 64321

    Πρόβλημα με Post Ελληνικών από Access

    Εχω μια εφαρμογή VB.NET η οποία κάνει post κάποια δεδομένα απο Access σε μια βαση Access στο Internet

    Εφαρμογή:

            PostData = "name=" & txtname.Text & "&address=" & Address.Text 
            URL = "http://www.web.com/add_customer.aspx"

            Dim httprequest As HttpWebRequest
            Dim httpresponse As HttpWebResponse
            Dim BodyReader As StreamReader
            Dim BodyText As String = ""
            Dim ResponseStream As Stream
            Dim RequestStream As Stream

            httprequest = CType(WebRequest.Create(URL), HttpWebRequest)
            httprequest.Method = "POST"
            httprequest.ContentType = "application/x-www-form-urlencoded"
            httprequest.ContentLength = PostData.Length
            RequestStream = httprequest.GetRequestStream()
            RequestStream.Write(Encoding.Default.GetBytes(PostData), 0, PostData.Length)
            RequestStream.Close()
            httpresponse = CType(httprequest.GetResponse(), HttpWebResponse)
            ResponseStream = httpresponse.GetResponseStream()
            BodyReader = New StreamReader(ResponseStream)
            BodyText = BodyReader.ReadToEnd   

    Web εφαρμογή:

    Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("fpdb/customers.mdb")
            Dim MySQL As String = "Insert into customers (name, address) " & _
             "Values (@name,  @Address)"
            Dim MyConn As New OleDbConnection(strConn)
            Dim Cmd As New OleDbCommand(MySQL, MyConn)
            With Cmd.Parameters
                .Add(New OleDbParameter("@name", Request("name")))
                .Add(New OleDbParameter("@email", Request("address")))
                

            End With
            MyConn.Open()
            Try
                Cmd.ExecuteNonQuery()
                
                Response.Write("Your information has been successfully posted.")
                        Catch ex As Exception
                Response.Write(ex.Message)
            End Try
            MyConn.Close()

    To πρόβλημα είναι οτι τα Ελληνικά εμφανίζονται σαν κουτάκια

    Καμιά ιδέα;

  •  18-03-2011, 18:43 64322 σε απάντηση της 64321

    Απ: Πρόβλημα με Post Ελληνικών από Access

    Το θέμα με τα ελληνικά και τα κουτάκια το έχουμε συζητήσει άπειρες φορές και η ουσία είναι ότι αν χρησιμοποιείς unicode σε σελίδες, strings και πεδία δεν έχεις κουτάκια. Αν έχεις θέμα συμβαίνουν ένα από τρία πράγματα:

    • Κάποιο από τα πεδία (source/target) ΔΕΝ είναι unicode με αποτέλεσμα τα ελληνικά να μην μπορούν να μεταφερθούν σωστά.
    • Τα δεδομένα δεν μεταφέρονται σε Unicode μορφή . Το Default encoding είναι το ASCII του μηχανήματος σου, οπότε έχεις αμέσως-αμέσως μία μετατροπή.
    • Η σελίδα της φόρμας έχει καρφωμένο κάποιο codepage που δεν καταλαβαίνει το string που στέλνεις. Από τη στιγμή που κάνεις ASCII encode θα έλεγα ότι ο server έχει διαφορετικό encoding από το PC σου.

    Γενικά, κουτάκια ή ? εμφανίζονται όταν έχεις κάποιο π.χ. ελληνικό string αποθηκευμένο σε ANSI πεδίο με ΜΗ ελληνικό codepage και προσπαθείς να το μεταφέρεις σε άλλη βάση, με άλλο codepage. Το .ΝΕΤ προσπαθεί να μετατρέψει τα string από το αρχικό στο τελικό codepage και αντικαθιστά με κουτάκια όποιο χαρακτήρα δεν μετατρέπεται. Για παράδειγμα, αφού δεν υπάρχει ο χαρακτήρας ξ στο Latin 1, αντικαθίσταται με κουτάκι.

    Περισσότερες λεπτομέρειες σε αυτό το αρχαίο post

    Ειδικά για την περίπτωση σου θα σου πρότεινα

    1. Να βεβαιωθείς ότι όλα τα πεδία είναι unicode (nvarchar στον SQL Server)
    2. Να χρησιμοποιήσεις UTF8 στον client και στο server για encoding και codepage

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-03-2011, 20:35 64325 σε απάντηση της 64322

    Απ: Πρόβλημα με Post Ελληνικών από Access

    Η βάση ειναι Access και οχι SQL

    Το Post γινεται απο εφαρμογη Desktop VB.NET

  •  18-03-2011, 20:56 64326 σε απάντηση της 64325

    Απ: Πρόβλημα με Post Ελληνικών από Access

    Όπως σου έγραψα ήδη δεν έχει σημασία ποιά γλώσσα ή βάση χρησιμοποιείς, αν χρησιμοποιήσεις έστω και σε ένα σημείο ASCII (όπως κάνεις εσύ με το Encoding.Default.GetBytes) θα έχεις πρόβλημα με τους μή λατινικούς χαρακτήρες.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-03-2011, 21:42 64327 σε απάντηση της 64326

    Απ: Πρόβλημα με Post Ελληνικών από Access

    Μα αν επιλεξω Encoding.Unicode τοτε μου βγαζει σφάλμα οτι το πεδιο Name δεν μπορεί να είναι κενό, σαν δηλαδη να μη στέλνει τιποτα

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems