mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
Merge pull request #209 from RaiKoHoff/Bugfixes
URL resp. HTML decoding fix
This commit is contained in:
commit
8c8ab933af
@ -1467,7 +1467,7 @@ void EditURLEncode(HWND hwnd)
|
||||
}
|
||||
|
||||
cchEscapedW = (int)LocalSize(pszEscapedW) / sizeof(WCHAR);
|
||||
UrlEscape(pszTextW, pszEscapedW, &cchEscapedW, URL_ESCAPE_SEGMENT_ONLY | URL_ESCAPE_AS_UTF8);
|
||||
UrlEscape(pszTextW, pszEscapedW, &cchEscapedW, URL_ESCAPE_SEGMENT_ONLY | URL_ESCAPE_PERCENT | URL_ESCAPE_AS_UTF8);
|
||||
|
||||
cchEscaped = WideCharToMultiByte(cpEdit,0,pszEscapedW,cchEscapedW,pszEscaped,(int)LocalSize(pszEscaped),NULL,NULL);
|
||||
|
||||
|
||||
@ -3616,6 +3616,7 @@ void UrlUnescapeEx(LPWSTR lpURL, LPWSTR lpUnescaped, DWORD* pcchUnescaped)
|
||||
while ((posIn < lastEsc) && (posOut < outLen))
|
||||
{
|
||||
BOOL bOk = FALSE;
|
||||
// URL encoded
|
||||
if (lpURL[posIn] == L'%') {
|
||||
buf[0] = lpURL[posIn + 1];
|
||||
buf[1] = lpURL[posIn + 2];
|
||||
@ -3625,14 +3626,17 @@ void UrlUnescapeEx(LPWSTR lpURL, LPWSTR lpUnescaped, DWORD* pcchUnescaped)
|
||||
posIn += 3;
|
||||
bOk = TRUE;
|
||||
}
|
||||
else if (lpURL[posIn + 1] == L'#') {
|
||||
int n = 0;
|
||||
while (IsDigit(lpURL[posIn + 2 + n]) && (n < 4)) {
|
||||
buf[n] = lpURL[posIn + 2 + n];
|
||||
++n;
|
||||
}
|
||||
buf[n] = L'\0';
|
||||
if (swscanf_s(buf, L"%i", &code) == 1) {
|
||||
}
|
||||
// HTML encoded
|
||||
else if ((lpURL[posIn] == L'&') && (lpURL[posIn + 1] == L'#')) {
|
||||
int n = 0;
|
||||
while (IsDigit(lpURL[posIn + 2 + n]) && (n < 4)) {
|
||||
buf[n] = lpURL[posIn + 2 + n];
|
||||
++n;
|
||||
}
|
||||
buf[n] = L'\0';
|
||||
if (swscanf_s(buf, L"%i", &code) == 1) {
|
||||
if (code <= 0xFF) {
|
||||
outBuffer[posOut++] = (char)code;
|
||||
posIn += (2 + n);
|
||||
if (lpURL[posIn] == L';') ++posIn;
|
||||
@ -3640,6 +3644,7 @@ void UrlUnescapeEx(LPWSTR lpURL, LPWSTR lpUnescaped, DWORD* pcchUnescaped)
|
||||
}
|
||||
}
|
||||
}
|
||||
//TODO: HTML Hex encoded (&#x...)
|
||||
if (!bOk) {
|
||||
posOut += WideCharToMultiByte(CP_UTF8, 0, &(lpURL[posIn++]), 1, &(outBuffer[posOut]), (int)(outLen - posOut), NULL, NULL);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user