2011-06-06 110 views
1

我收到來自Web服務的Ajax響應,我不確定這些字符是什麼。我需要將它們轉換爲ASCII/UTF-8等價物,但我不知道從哪裏開始。Ajax響應中的奇怪字符

的某些字符的一個例子是:

\x3d1 
\x26pf 
\x3dp 
\x26s 
\x3dpsy 
\x26 

原始JSON響應是從谷歌建議:

{e:"-5vsTZHOF8yo8QPK1YisAQ",c:1,u:"http://www.google.co.uk/s?hl\x3den\x26pq\x3dbbc\x26xhr\x3dt\x26q\x3dc\x26cp\x3d1\x26pf\x3dp\x26sclient\x3dpsy\x26source\x3dhp\x26aq\x3d\x26aqi\x3d\x26aql\x3d\x26oq\x3d\x26pbx\x3d1\x26bav\x3don.2,or.r_gc.r_pw.\x26fp\x3d10b19ece71d55c8f\x26biw\x3d1280\x26bih\x3d554\x26tch\x3d1\x26ech\x3d1\x26psi\x3dv5vsTd78IMKvhQez9fCmCA.1307352340620.1",d:"[\x22c\x22,[[\x22c\\u003Cb\\u003Eurrys\\u003C\\/b\\u003E\x22,0,\x220\x22],[\x22c\\u003Cb\\u003Eomet\\u003C\\/b\\u003E\x22,0,\x221\x22],[\x22c\\u003Cb\\u003Ebbc\\u003C\\/b\\u003E\x22,0,\x222\x22],[\x22c\\u003Cb\\u003Eineworld\\u003C\\/b\\u003E\x22,0,\x223\x22],[\x22c\\u003Cb\\u003Earphone warehouse\\u003C\\/b\\u003E\x22,0,\x224\x22]],{j:1}]"}/*""*/{e:"-5vsTZHOF8yo8QPK1YisAQ",c:0,u:"http://www.google.co.uk/s?hl\x3den\x26pq\x3dbbc\x26xhr\x3dt\x26q\x3dc\x26cp\x3d1\x26pf\x3dp\x26sclient\x3dpsy\x26source\x3dhp\x26aq\x3d\x26aqi\x3d\x26aql\x3d\x26oq\x3d\x26pbx\x3d1\x26bav\x3don.2,or.r_gc.r_pw.\x26fp\x3d10b19ece71d55c8f\x26biw\x3d1280\x26bih\x3d554\x26tch\x3d1\x26ech\x3d1\x26psi\x3dv5vsTd78IMKvhQez9fCmCA.1307352340620.1",d:""}/*""*/ 
+0

有何迴應你假設得到? JSON,XML,CSV? – doNotCheckMyBlog 2011-06-06 09:26:23

+1

雖然我們可以猜測編碼方法,但如果您告訴我們服務器聲稱數據的內容類型是什麼,完整響應是什麼樣的,以及如何在JS中解析它,那麼可能會更好。有一個很好的機會,你應該使用一個合理的解碼器作爲整體的響應(而不是專注於這個小部分)。如果你控制了響應,那麼最好的解決方案可能是在響應中切換到標準數據格式,而不管你現在在做什麼。 – Quentin 2011-06-06 09:26:35

+0

你有沒有原始的答覆? – SamT 2011-06-06 09:26:55

回答

0

,看起來像URL編碼的字符。通常你不需要轉換任何東西。例如,如果你從一個AJAX調用得到以下字符串:

var x = '\x3d1\x26pf\x3dp\x26s\x3dpsy\x26'; 

如果您嘗試打印:

alert(x); 

它應該顯示正確的值:

=1&pf=p&s=psy& 
+0

啊,你說得對。謝謝。 – 2011-06-06 09:32:31

+0

如果我輸出整個JSON字符串,則轉換非字符。 – 2011-06-06 09:47:48

+0

@Riess How子,這很正常。您必須將此JSON字符串解析爲JavaScript對象,並且例如,如果您評估了「u」屬性,它將顯示正確的值。 – 2011-06-06 09:52:16