どのようにURLエスケープMFC CStringですか?URLエスケープMFC文字列
4
A
答えて
7
0
私は、このソリューションに遭遇する可能性があり、他のラッパー関数を作成しました。またWininet.libにリンクして
bool EscapeURL (CString& url, DWORD options = ICU_DECODE | ICU_ENCODE_PERCENT)
{
DWORD bytes = url.GetLength() + 1;
LPTSTR escapedString = new TCHAR[bytes + 1];
escapedString[0] = 0;
// First read will generate the correct byte count for the return string
//
bool result = InternetCanonicalizeUrl (url.GetBuffer(), escapedString, &bytes, options);
if (!result)
{
// Resize the String
//
delete [] escapedString;
escapedString = new TCHAR[bytes];
escapedString[0] = 0;
result = InternetCanonicalizeUrl (url.GetBuffer(), escapedString, &bytes, options);
}
if (result)
{
url = escapedString;
delete [] escapedString; // Thanks The Steve
}
else
{
// Optional
// If the call fails return the message in the url
//
DWORD errorMessageID = ::GetLastError();
LPSTR messageBuffer = nullptr;
size_t size = FormatMessageA (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);
std::string message (messageBuffer, size);
LocalFree (messageBuffer);
url = message.c_str();
}
return result;
}
使用
CString internetUse = "The Internet is %%4 <pr0n>";
EscapeURL (internetUse);
// internetUse = 0x01538890 "The%20Internet%20is%20%25%254%20%3Cpr0n%3E"
+0
メモリがリークしています。 escapedStringはコピーされますが、決して削除されません。 – TheSteve
関連する問題
- 1. URLのjava MockRestServiceServerエスケープ文字
- 2. エスケープNSDateFormatter文字列
- 3. DataWeave文字列のエスケープ文字
- 4. 文字列エスケープ文字の補間
- 5. エスケープ= java文字列の文字
- 6. 文字列のエスケープ文字をエスケープできません
- 7. Mavenマップのエスケープ文字列
- 8. SBJsonとエスケープ文字列。
- 9. Ormliteエスケープ文字列メソッド?
- 10. 文字列エスケープ変換vb.net
- 11. エスケープSQL文字列Javaで
- 12. AndroidエスケープJavaScript文字列
- 13. MySQLのエスケープ文字列。
- 14. エスケープ文字列内のRegExp.lastMatch($&)
- 15. SQL文字列エスケープ質問
- 16. CodeIgniterのエスケープ文字列
- 17. SQL Serverエスケープ文字列
- 18. Tclの文字列エスケープ
- 19. Django REST文字列エスケープ
- 20. Pythonの文字列エスケープ
- 21. URLにエスケープ文字をデコードする
- 22. ユニコードのエスケープ文字を含む文字列を通常の文字列に変換する(エスケープ文字なし)
- 23. Gitweb URLがクエリ文字列でエスケープする
- 24. 目的地のURL文字列エスケープ表現? ( "パーセントエンコーディング")
- 25. CDCなしのMFC文字列幅
- 26. エスケープ文字列のMySQL構文エラー
- 27. URL文字列
- 28. Python2.xのUnicode文字列からエスケープ文字(エスケープ文字のUnicode文字)を削除するには?
- 29. .NETエスケープ文字?
- 30. エスケープ文字
クイックソリューション、素敵なwininet.h含む必要です。私はソースコードを投稿しようとしていたが、これはちょうどフィンを行うだろう! – toto
CStringを直接受け取ったり返したりすることはありませんが、前後に変換するのは簡単です。 –
注 - 機能はデコードすることもできますが、注意事項を注意深く読んでください。 – Spike0xff