I made some changes to code.
wxString tmpBuildLogFilename = m_BuildLogFilename;
tmpBuildLogFilename.Replace(wxT("\\"), wxT("/"), true);
wxString utf8BuildLogFilename = wxString::From8BitData(tmpBuildLogFilename.utf8_str().data());
wxString uriBuildLogFilename = wxURI(utf8BuildLogFilename).BuildURI();
#if wxCHECK_VERSION(2, 9, 0)
Manager::Get()->GetLogManager()->Log(F(_T("file://%s"), uriBuildLogFilename.wx_str()), m_PageIndex, Logger::warning);
#else
Manager::Get()->GetLogManager()->Log(F(_T("file://%s"), uriBuildLogFilename.c_str()), m_PageIndex, Logger::warning);
#endif
Now copy the link text to Firefox, FF will open the html log file OK, but IE cann't yet.
It seem that C::B's HTML viewer no support a url include Chinese even the Chinese char was converted by wxURI.
As far as I see only the spaces are a problem.
So this one might work:
wxString tmpFilename = m_BuildLogFilename;
tmpFilename.Replace(_T(" "), wxT("%20"), true);
#if wxCHECK_VERSION(2, 9, 0)
Manager::Get()->GetLogManager()->Log(F(_T("file://%s"), tmpFilename.wx_str()), m_PageIndex, Logger::warning);
#else
Manager::Get()->GetLogManager()->Log(F(_T("file://%s"), tmpFilename.c_str()), m_PageIndex, Logger::warning);
#endif