Unity WWW Text响应是乱码

时间:2016-06-21 10:22:59

标签: web text unity3d httprequest

我使用Unity网站上的示例代码为WWW类发出API请求,但文本响应是垃圾。看起来像����。当我记录响应头时,我得到200响应,除了CONTENT-TYPE是image / jpeg之外,一切似乎都没问题。我已经尝试了几个不同的随机.json文件来测试它们,它们都返回相同的东西。请求将图像用作纹理确实有效。

public class SpeechReq : MonoBehaviour {
//public string url = "https://gist.githubusercontent.com/wethecode/1f79baf168680afb0f2d/raw/755f9fb71dcc34df811b4bc26448d88a0f97f34d/snippets.json";
public string url = "https://gist.githubusercontent.com/damienh/fea91ab710475d499a09/raw/893065428badd8bfdc7b39fe17675b8aa031ac51/gistfile1.json";
IEnumerator Start()
{
    WWW www = new WWW(url);
    yield return www;

    string respText = www.text;
    Debug.Log(respText);
    //Output: ����

    byte[] resp = www.bytes;
    var str = System.Text.Encoding.Default.GetString(resp);
    Debug.Log(str);
    //Output: ÿØÿà

    if (www.responseHeaders.Count > 0)
    {
        foreach (KeyValuePair<string, string> entry in www.responseHeaders)
        {
            Debug.Log(entry.Value + "=" + entry.Key);
            //Output: HTTP/1.0 200 OK=STATUS
            //...
            //image/jpeg=CONTENT-TYPE
        }
    }

}
}

1 个答案:

答案 0 :(得分:0)

默认情况下,WWW类的.text方法在响应开头返回UTF8字节顺序标记。见a description of the BOM here

你可以尝试:

 string jsonText = "";
 if (string.IsNullOrEmpty(www.error)) 
 {
     jsonText = System.Text.Encoding.UTF8.GetString(www.bytes, 3, www.bytes.Length - 3);  // Skip the UTF8 BOM
     JSONObject myObject = new JSONObject(jsonText);
 }