+
+wxString wxURL::ConvertToValidURI(const wxString& uri)
+{
+ wxString out_str;
+ wxString hexa_code;
+ size_t i;
+
+ for (i=0;i<uri.Len();i++) {
+ wxChar c = uri.GetChar(i);
+
+ if (c == wxT(' '))
+ out_str += wxT('+');
+ else {
+ if (!isalpha(c) && c != wxT('.') && c != wxT('+') && c != wxT('/')) {
+ hexa_code.Printf(wxT("%%%02X"), c);
+ out_str += hexa_code;
+ } else
+ out_str += c;
+ }
+ }
+
+ return out_str;
+}
+
+wxString wxURL::ConvertFromURI(const wxString& uri)
+{
+ wxString new_uri;
+
+ size_t i = 0;
+ while (i<uri.Len()) {
+ int code;
+ if (uri[i] == wxT('%')) {
+ i++;
+ if (uri[i] >= wxT('A') && uri[i] <= wxT('F'))
+ code = (uri[i] - wxT('A') + 10) * 16;
+ else
+ code = (uri[i] - wxT('0')) * 16;
+ i++;
+ if (uri[i] >= wxT('A') && uri[i] <= wxT('F'))
+ code += (uri[i] - wxT('A')) + 10;
+ else
+ code += (uri[i] - wxT('0'));
+ i++;
+ new_uri += (wxChar)code;
+ continue;
+ }
+ new_uri += uri[i];
+ i++;
+ }
+ return new_uri;
+}