【发布时间】:2011-02-21 18:06:52
【问题描述】:
当从 HttpWebRequest 返回字符串时,我收到的字符代码(' 和 &quote;)会破坏我的响应(显示 39; 和 uto;):
internal static void TranslateThis(Player player, string fromLang, string toLang, string text){
try
{
string translated = null;
HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create("http://translate.google.com/?langpair=" + fromLang + "|" + toLang + "&text=" + text.Replace(" ", "+") + "#");
HttpWebResponse res = (HttpWebResponse)hwr.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string html = sr.ReadToEnd();
int a = html.IndexOf("onmouseout=\"this.style.backgroundColor='#fff'\">") + 47;
int b = html.IndexOf("</span>",html.IndexOf("onmouseout=\"this.style.backgroundColor='#fff'\">") + 47);
translated = html.Substring(a, b - a);
if (translated.Length < (10 * text.Length)){
if (player == Player.Console)
{
player.ParseMessage(translated, true);
}
else
{
player.ParseMessage(translated, false);
}
} else {
player.Message("Usage: /translate [lang] [message]");
}
}
catch
{
player.Message("Usage: /translate [lang] [message]");
}
}
【问题讨论】:
-
您的示例没有显示实际问题 - 您需要首先确定您的“html”变量是否包含您期望的值,然后使用该值测试您的 ParseMessage 方法。
-
如果 html 变量包含 ' 或 " 这似乎会给我带来问题。
-
我已经用 StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF7); 进行了测试一些法语字符现在可以正常显示了。很抱歉没有提供帮助我所需的所有变量。我正在使用谷歌翻译并返回翻译后的字符串。因此它可能在某些法语单词中包含 '(例如 J'ai)。当我向播放器显示消息时,它显示为 J35;ai - 这有助于说明我的问题吗?
标签: c# regex httpwebrequest