I have made next changes to solve this problem (patched files are in attachment):
file client\WebServerManager.cpp
line 105.
original:
pagehtml += " <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />";
replacement:
pagehtml += " <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
line 115.
original:
pagehtml += " <form method='get' action='index.htm' enctype='multipart/form-data'>";
replacement:
pagehtml += " <form method='get' action='index.htm'>";
comment: incorrect enctype for this purpose, using default.
line 145.
original:
pagehtml += " <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />";
replacement:
pagehtml += " <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
line 349.
original:
string ret = "<form method='GET' name='search' ACTION='search.html' enctype='multipart/form-data'>";
replacement:
string ret = "<form method='GET' name='search' ACTION='search.html'>";
line 383.
original:
ret += "<option value='8'>TTH";
replacement:
ret += "<option value='8'>TTH</select>";
comment: the <select> tag must be closed.
line 536.
original:
QueueManager::getInstance()->add(m["name"],Util::toInt64(m["size"]),m["tth"]);
replacement:
QueueManager::getInstance()->add(Util::encodeURI(m["name"], true),Util::toInt64(m["size"]),m["tth"]);
comment: decoding "name"'s value.
line 546.
original:
toSend = Text::utf8ToAcp(WebServerManager::getInstance()->getPage(header, IP));
replacement:
toSend = /* Text::utf8ToAcp */(WebServerManager::getInstance()->getPage(header, IP));
comment: recode operation is not required.
file client\WebServerManager.h
line 145.
original:
int i = 0;
while( (i = search_str.find("+", i)) != string::npos) {
search_str.replace(i, 1, " ");
i++;
}
replacement:
/*
int i = 0;
while( (i = search_str.find("+", i)) != string::npos) {
search_str.replace(i, 1, " ");
i++;
}
*/
search_str=Util::encodeURI(search_str, true);
comment: search request must be decoded. client.zip