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

 

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

Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

Îåêßíçóå áðü ôï ìÝëïò tnikos. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 25-09-2009, 22:42. Υπάρχουν 18 απαντήσεις.
Σελίδα 1 από 2 (19 εγγραφές)   1 2 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-09-2009, 09:53 53954

    Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Φίλοι καλημέρα,

    VS2005, Framework 2.0, VB

    μέσα από μια winform έχω ένα webbrowser control, και στην κλήση του uri του περνάω ένα POST το οποίο σε μια Variable έχει ελληνικά γράμματα

    π.χ

    http://mywebsite.com/setvar.aspx?RND=0,533424&AFM=146107930&Message=(Message LIKE '~ΚΥΡΙΕ~')

     Στον Web Server το Request.QueryString("Message") είναι "(Message LIKE '~~')"

    δοκίμασα πριν στείλω το URL να το μετατρέψω με την εντολή Uri.EscapeUriString

    Οπότε το παράδειγμά έγινε

    http://mywebsite.com/setvar.aspx?RND=0,533424&AFM=146107930&Message=(Message%20LIKE%20'~%CE%9A%CE%A5%CE%A1%CE%99%CE%95~')

      Αλλά το ίδιο αποτέλεσμα, εάν το τρέξω μέσω Internet explorer με την δεύτερη μορφή τρέχει κανονικά, αλλά όχι από το WebBrowser control.

    Εάν κάποιος έχει αντιμετωπίσει το ίδιο πρόβλημα και έχει λύση, θα με βοηθούσε αρκετά

    Ευχαριστώ

     

  •  25-09-2009, 16:11 53983 σε απάντηση της 53954

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Η λύση είναι απλή. Δε θα στέλνεις κείμενο αλλά αριθμούς. Θα κάνεις μία αντιστοίχηση της μορφής 1 = ΚΥΡΙΕ, 2 = ΚΥΡΙΑ, 3 = ΔΕΣΠΟΙΝΙΣ και ούτω καθεξής
  •  25-09-2009, 16:21 53984 σε απάντηση της 53983

    Smile [:)] Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Smile χα χα καλό !!!!!

    Αλλά δεν μπορώ να φανταστώ ποιες λέξεις θα χρησιμοποιήσει ο χρήστης της εφαρμογής !!!

     

  •  25-09-2009, 16:22 53985 σε απάντηση της 53984

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Μία λύση είναι να του περιορίσεις τις λέξεις με ένα combobox αν μπορείς
  •  25-09-2009, 16:26 53986 σε απάντηση της 53985

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Tο ΚΥΡΙΕ είναι σαν παράδειγμα, το πρόβλημα είναι πως ο χρήστης θα μπορεί να γράφει ότι θέλει, απλά το πρόβλημα είναι γιατί δεν περνάνε τα Ελληνικά στον Web Server.
  •  25-09-2009, 16:29 53987 σε απάντηση της 53986

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Μισό λεπτό. Περιέγραψε ακριβώς τι θες να κάνεις για να μπορέσω να σε βοηθήσω καλύτερα. Γενικά url και ελληνικά είναι λίγο κάπως τα πράγματα. Ο χρήστης το ΚΥΡΙΕ θα το γράφει σε κάποιον text editor πχ, είναι μία τιμή που θα μπορεί να την επιλέξει από λίστα, τι θες να κάνεις;
  •  25-09-2009, 16:29 53988 σε απάντηση της 53954

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Έχεις πρόσβαση στον κώδικα της φόρμας;

    Υποθέτω πως χρειάζεται να κάνεις την αντίστροφη διαδικασία από το EscapeUriString. Δοκίμασε το Uri.UnescapeDataString(Request.QueryString("Message")) στη φόρμα για να πάρεις σωστά το "~ΚΥΡΙΕ~".


    Τάσος Καραγιάννης

    Baby debugging steps...
  •  25-09-2009, 16:36 53989 σε απάντηση της 53988

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Σωστή η λύση του Τάσου. Δε στο πρότεινα γιατί καλό είναι να κρατάς τα qurystrings σου μικρά. Αλλά στη τελική εσύ αποφασίσεις
  •  25-09-2009, 17:06 53990 σε απάντηση της 53989

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Εξακολουθώ να έχω πρόβλημα,

    Όταν ελέγχω το Querystring("Message") δεν έχει μέσα esc chars λείπει τελείος η λέξη που έχει γραφτεί στα ελληνικά, πχ "ΚΥΡΙΕ", οπότε το

    Uri.UnescapeDataString(Request.QueryString("Message"))

    Δεν έχει να μετατρέψει κάτι

    Πάντως ευχαριστώ για τον ενδιαφέρον.

  •  25-09-2009, 17:34 53991 σε απάντηση της 53990

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Το πρόβλημα σίγουρα δεν έχει να κάνει με το encoding. Κάτι άλλο περίεργο συμβαίνει στον κώδικα σου. Προφανώς, αν κάνεις encode μία παράμετρο θα πρέπει να την κάνεις μετά decode. Για να είναι κενό όμως το Message κάτι άλλο περίεργο θα γίνεται. Δεν έχει νόημα να ψάχνεις για το πρόβλημα στο encoding.

    Για του λόγου το αληθές, έφτιαξα μία απλή φόρμα με τον παρακάτω κώδικα σε ένα κουμπί

            private void button1_Click(object sender, EventArgs e)
            {
                string url = String.Format("http://localhost:1129/default.aspx?RND=0,533424&AFM=146107930&Message={0}", Uri.EscapeDataString(this.textBox1.Text));
                this.webBrowser1.Url = new Uri(url);
            }

    και ένα web application με το παρακάτω πολύ απλό default.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Server._Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <%
            var name=Uri.UnescapeDataString(Request.QueryString["Message"]);
            Response.Write(name); %>
        </div>
        </form>
    </body>
    </html>

    Και δεν αντιμετώπισα κανένα πρόβλημα. Αν προσέξεις, το URL που φτιάχνω είναι ίδιο με το δικό σου.

    Θα πρέπει καταρχήν να δοκιμάσεις κι εσύ με μία απλή σελίδα να δεις αν εξακολουθεί να υπάρχει το πρόβλημα. Αν εξαφανιστεί, θα ξέρεις ότι το πρόβλημα βρίσκεται στον κώδικα της σελίδας σου. Αν όχι, θα βρίσκεται στον κώδικα της φόρμας σου.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  25-09-2009, 17:41 53992 σε απάντηση της 53990

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Καταρχήν να διορθώσω το POST. Αυτό που κάνεις είναι http request και όχι http POST.

    Δοκίμασε να κάνεις Server.UrlEncode αντί για UnescapeDataString.


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  25-09-2009, 18:13 53994 σε απάντηση της 53992

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Δημήτρη, μάλλον εννοείς Server.UrlDecode. Το πρόβλημα δεν είναι πως θα γίνει το decode του querystring αλλά ότι το querystring είναι άδειο.

    Εξάλλου, το ίδιο encoding κάνουν και η Uri.EscapeDataString και η Uri.EscapeUriString kai η HttpUtility.UrlEncode. Μπορώ άνετα να γράψω Uri.EscapeDataString στον client και Server.UrlDecode στον server και να πάρω σωστά το string μου.

    Παίζοντας όμως με τα encodings πρόσεξα κάτι άλλο. Όταν φτιάχνω πρώτα ένα Uri και μετά το δώσω στην webBrowser1.Uri δημιουργούνται προβλήματα. Αν όμως γράψω webBrowser1.Navigate(url), όπου url το string που έφτιαξα με κάποια από τις Encoding, δεν έχω πρόβλημα. Υποψιάζομαι ότι o constructor του Uri προσπαθεί να κάνει το δικό του escaping και έτσι γίνεται μπάχαλο. Σε κάθε περίπτωση πάντως κάτι θα μου δείξει. Δεν μου έτυχε περίπτωση που το Message να είναι κενό.

    Νίκο, για δοκίμασε με μία απλή φόρμα και μία απλή σελίδα, για να δούμε τί γίνεται. Για δείξε μας κιόλας, πως φορτώνεις τη σελίδα, θέτοντας το Url ή με τη Navigate?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  25-09-2009, 18:38 53995 σε απάντηση της 53994

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Όχι το Server.UrlEncode εννοώ για να κάνει την κατασκευή του url που θέλει. Αν πάλι λες ότι το Server.UrlEncode κάνει την ίδια ακριβώς δουλειά με το Uri.EscapeUriString, τότε άκυρο αυτό που είπα. Κάνουν όντως την ίδια δουλειά;


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  25-09-2009, 18:42 53996 σε απάντηση της 53992

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Επειδή δεν κατάφερα με το EscDataString , UnEscapeDatastring(), να βρώ άκρη το έλυσα ως εξής:

    μια Function από μεριά WebForm

    Function SetMyURI(ByVal st As String) As String
       Dim ns As String = ""
       For x As Integer = 0 To st.Length - 1
          ns = ns & Asc(st(x)) & ","
       Next
       ns = Mid(ns, 1, ns.Length - 1)
       SetMyURI = ns
    End Function

    και μια άλλη από την μεριά του WebServer

        Function GetMyURI(ByVal st As String) As String
            Dim ch() As String
            ch = st.Split(",")
            Dim ns As String = ""
            For x As Integer = 0 To ch.Length - 1
                ns = ns & Chr(ch(x))
            Next
            GetMyURI = ns
        End Function

    Ευχαριστώ πάντως για το ενδιαφέρον

     

  •  25-09-2009, 18:50 53997 σε απάντηση της 53996

    Απ: Web Broswer και αποστολή POST με ελληνικούς χαρακτήρες

    Αααα, δεν μας είπες ότι χρησιμοποιείς VB.NET! H VB.NET πολλές φορές μασάει errors με αποτέλεσμα να παίρνεις κενά εκεί που δεν το περιμένεις. Αν, για παράδειγμα, δεν έχεις ορίσει Option Explicit και προσπαθήσεις να χρησιμοποιήσεις μία μεταβλητή χωρίς να την έχεις ορίσει πρώτα, η VB θα την δημιουργήσει επι τόπου - κενή. Πως δοκίμασες ως τώρα να φτιάξεις το url? Πως έκανες navigate από τον WebBrowser?

    Το σίγουρο είναι ότι οι μέθοδοι Encode, Decode κλπ. δουλεύουν. Φτιάχνοντας τις δικές σου μεθόδους δεν έλυσες το πρόβλημα, απλά το κουκούλωσες και θα σε ξαναδαγκώσει πολύ γρήγορα. Αν για παράδειγμα έχεις ξεχάσει κάπου να ορίσεις την μεταβλητή που περνάς στην SetMyUri θα έχεις πάλι το ίδιο ακριβώς πρόβλημα


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Σελίδα 1 από 2 (19 εγγραφές)   1 2 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems