Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » U++ Library support » U++ MT-multithreading and servers » A new function to Web Package Unicode-Escape-Javascript -> Unicode
Re: A new function to Web Package Unicode-Escape-Javascript -> Unicode [message #33257 is a reply to message #33256] Wed, 20 July 2011 21:01 Go to previous messageGo to previous message
sergeynikitin is currently offline  sergeynikitin
Messages: 748
Registered: January 2008
Location: Moscow, Russia
Contributor

I propose to extend function UrlDecode with form \uXXXX additionally to %uXXXX enciding. Form \uXXXX is reserved for old browsers and it is standard like form %uXXXX.

Interesting Online Encodings converter:
http://rishida.net/tools/conversion/

pls apply patch to Function:
String UrlDecode(const char *b, const char *e)
{
        StringBuffer out;
        byte d1, d2, d3, d4;
        for(const char *p = b; p < e; p++)
                if(*p == '+')
                        out.Cat(' ');
                else if(*p == '%' && (d1 = ctoi(p[1])) < 16 && (d2 = ctoi(p[2])) < 16) {
                        out.Cat(d1 * 16 + d2);
                        p += 2;
                }
                else if(*p == '%' && (p[1] == 'u' || p[1] == 'U')
                && (d1 = ctoi(p[2])) < 16 && (d2 = ctoi(p[3])) < 16
                && (d3 = ctoi(p[4])) < 16 && (d4 = ctoi(p[5])) < 16) {
                        out.Cat(WString((d1 << 12) | (d2 << 8) | (d3 << 4) | d4, 1).ToString());
                        p += 5;
                }
                else
                        out.Cat(*p);
        return out;
}

I propose change like this:
String UrlDecode(const char *b, const char *e)
{
        StringBuffer out;
        byte d1, d2, d3, d4;
        for(const char *p = b; p < e; p++)
                if(*p == '+')
                        out.Cat(' ');
                else if(*p == '%' && (d1 = ctoi(p[1])) < 16 && (d2 = ctoi(p[2])) < 16) {
                        out.Cat(d1 * 16 + d2);
                        p += 2;
                }
                else if((*p == '%' || *p == '\') && (p[1] == 'u' || p[1] == 'U') // <-This line changed
                && (d1 = ctoi(p[2])) < 16 && (d2 = ctoi(p[3])) < 16
                && (d3 = ctoi(p[4])) < 16 && (d4 = ctoi(p[5])) < 16) {
                        out.Cat(WString((d1 << 12) | (d2 << 8) | (d3 << 4) | d4, 1).ToString());
                        p += 5;
                }
                else
                        out.Cat(*p);
        return out;
}


SergeyNikitin<U++>( linux, wine )
{
    under( Ubuntu || Debian || Raspbian );
}
 
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Bug with socket
Next Topic: SSL server crash
Goto Forum:
  


Current Time: Mon May 13 00:37:40 CEST 2024

Total time taken to generate the page: 0.02170 seconds