2011-11-29 36 views
3

我們有一個使用Zend_Http_Client訪問C#服務器(Windows/MVC 2)的PHP客戶端(LINUX)。LINUX到Windows不良編碼響應

我們正在嘗試設置與請求正文相對應的授權標頭。

不幸的是,即使在PHP和C#中使用UTF-8編碼,在C#中收到的請求體也會有一些不同的字符。

雖然,C#服務器可以正確設置Request.Files並且圖片可以正常工作。

另外,使用UTF-8編碼字符的簡單文本文件將不會出現任何問題。

這裏是PHP請求:

enter image description here

二進制文件的一部分:

0000000: 0d0a 8950 4e47 0d0a 1a0a 0000 000d 4948 ...PNG........IH 
0000010: 4452 0000 0010 0000 0010 0806 0000 001f DR.............. 
0000020: f3ff 6100 0000 0467 414d 4100 00af c837 ..a....gAMA....7 
0000030: 058a e900 0000 1974 4558 7453 6f66 7477 .......tEXtSoftw 
0000040: 6172 6500 4164 6f62 6520 496d 6167 6552 are.Adobe ImageR 
0000050: 6561 6479 71c9 653c 0000 029f 4944 4154 eadyq.e<....IDAT 
0000060: 38cb a593 eb4b 5361 1cc7 fd3b 76ce 766c 8....KSa...;v.vl 
0000070: 0309 6444 2182 8450 7b15 2412 3b9a 0dc5 ..dD!..P{.$.;... 
0000080: bc2c 4bd3 ddbd d236 63d8 4c8b 3272 5ec6 .,K....6c.L.2r^. 
0000090: 4829 2db3 d46a 734e 6dea d4e6 d694 3271 H)-..jsNm.....2q 
00000a0: d951 42cc bde9 42b5 6174 b16f e7ec c54c .QB...B.at.o...L 
00000b0: 1223 7ae0 0b0f 0fcf e7f3 7bae 7100 e2fe .#z.......{.q... 
00000c0: 277f 0c14 f80e 8972 a70f eab3 3d29 4cc6 '......r....=)L. 
00000d0: e3fd 61e9 8838 2c75 2532 5267 a23e ddbe ..a..8,u%2Rg.>.. 
00000e0: 57b4 ab20 cf9b 4acb 3cc9 219d 4786 9b41 W.. ..J.<.!.G..A 
00000f0: 0bfa 96bb a2e9 5c6c 4689 eb18 24bd 5448 ......\lF...$.TH 
0000100: d243 d13b 0ad8 aa74 e678 52e4 ea9c 11ce .C.;...t.xR..... 
0000110: d57e d85e 5e83 69ae 321a aeef 58ed 43e3 .~.^^.i.2...X.C. 
0000120: 4c15 0ed8 f891 641b 9fde 26c8 f1a4 0833 L.....d...&....3 
0000130: dd49 eb1c cc4d ac09 94a1 c25f 02cd cc19 .I...M....._.... 
0000140: e8d8 94b3 a9f6 9d85 fdf5 3d5c 9caa 80d8 ..........=\.... 
0000150: 42ae 8baf 93c2 9840 e64e 32a8 c6b2 a295 [email protected] 
0000160: 3998 0355 de53 504c 1742 3155 00f5 5421 9..U.SPL.B1U..T! 
0000170: dc6b 8330 7895 70b0 92dc 9e23 48b8 421a .k.0x.p....#H.B. 
0000180: 6282 8c11 31d3 196c 8635 d884 0a5f 3194 b...1..l.5..._1. 
0000190: 4fe4 2c98 0fe5 241b 4f3e c6df b8c0 b550 O.,...$.O>.....P 
00001a0: 640d 6dcf 1b61 9b6b 447c 3dc9 c404 47ed d.m..a.kD|=...G. 
00001b0: 091b 0f56 6ea3 36a0 81d6 5bc4 ae64 008b ...Vn.6...[..d.. 
00001c0: 1fe6 a19a 28c4 d8da 5014 feb1 f91d 6dcf ....(...P.....m. 
00001d0: 2ec1 3051 8cbe 6027 0446 6223 2690 dca7 ..0Q..`'.Fb#&... 
00001e0: 36fa 97bb 61f4 ab50 ebd7 e2d3 d78f 51e8 6...a..P......Q. 
00001f0: fd97 b731 d832 5b0f b52b 1b7a f769 f407 ...1.2[..+.z.i.. 
0000200: 3b20 a8f9 5dd0 4331 37e6 9bd0 be70 19ba ; ..].C17....p.. 
0000210: 4939 ccbe 6a44 be7d 8ec2 9b3f 3761 797a I9..jD.}...?7ayz 
0000220: 0165 ce2c 6858 414b a00e ed5e 33a8 2a62 .e.,hXAK...^3.*b 
0000230: 6b0b a9b7 0406 f940 1aec 2b77 513d 2187 [email protected]+wQ=!. 
0000240: da7d 1275 d3e5 587a b780 b6d9 0694 0e1e .}.u..Xz........ 
0000250: 87c2 7102 3a67 0eec afba 916e 3d0c aa92 ..q.:g.....n=... 
0000260: d83a c464 2b5f b88f bd1a b347 8387 cc1d .:.d+_.....G.... 
0000270: 548e e641 3b9c 03d5 900c 4a07 170e cec6 T..A;.....J..... 
0000280: a3a5 2e18 878a 2150 f3d6 2935 21dc f690 ......!P..)5!... 
0000290: 129b 483a be81 8898 dc65 70b0 92d6 8019 ..H:.....ep..... 
00002a0: fad1 229c 1b96 a395 dd82 9d85 f5ce 22f0 .."...........". 
00002b0: 4b79 1116 a677 7cca 7b1a 489a 3211 2169 Ky...w|.{.H.2.!i 
00002c0: 8704 ed7e 337a 5f58 d13b 6f85 c56b 425a ...~3z_X.;o..kBZ 
00002d0: 4b2a 040a 5e88 5211 f4ae 9f89 3a4f 8a28 K*..^.R.....:O.(
00002e0: 03a1 a76a 0846 a0e5 8505 2a5e 98ad c8b0 ...j.F....*^.... 
00002f0: d153 a584 e8af bff1 5ff3 0b67 d0ac e579 .S......_..g...y 
0000300: bad4 6300 0000 0049 454e 44ae 4260 820d ..c....IEND.B`.. 
0000310: 0a          . 

這裏是C#請求:

enter image description here

二進制文件的一部分:

0000000: efbf bd50 4e47 0d0a 1a0d 0a20 2020 0d0a ...PNG..... .. 
0000010: 4948 4452 2020 2010 2020 2010 0806 2020 IHDR . ... 
0000020: 201f efbf bdef bfbd 6120 2020 0467 414d .......a .gAM 
0000030: 4120 20ef bfbd efbf bd37 05ef bfbd efbf A ......7...... 
0000040: bd20 2020 1974 4558 7453 6f66 7477 6172 . .tEXtSoftwar 
0000050: 6520 4164 6f62 6520 496d 6167 6552 6561 e Adobe ImageRea 
0000060: 6479 71ef bfbd 653c 2020 02ef bfbd 4944 dyq...e< ....ID 
0000070: 4154 38cb a5ef bfbd efbf bd4b 5361 1cef AT8........KSa.. 
0000080: bfbd efbf bd3b 76ef bfbd 766c 0309 6444 .....;v...vl..dD 
0000090: 21ef bfbd efbf bd50 7b15 2412 3bef bfbd !......P{.$.;... 
00000a0: 0d0a c5bc 2c4b efbf bddd bdef bfbd 3663 ....,K........6c 
00000b0: efbf bd4c efbf bd32 725e efbf bd48 292d ...L...2r^...H)- 
00000c0: efbf bdef bfbd 6a73 4e6d efbf bdef bfbd ......jsNm...... 
00000d0: efbf bdd6 9432 71ef bfbd 5142 ccbd efbf .....2q...QB.... 
00000e0: bd42 efbf bd61 74ef bfbd 6fef bfbd efbf .B...at...o..... 
00000f0: bdef bfbd 4c12 237a efbf bd0b 0f0f efbf ....L.#z........ 
0000100: bdef bfbd efbf bd7b efbf bd71 20ef bfbd .......{...q ... 
0000110: efbf bd27 7f0c 14ef bfbd 0eef bfbd 72ef ...'..........r. 
0000120: bfbd 0fef bfbd 3d29 4cef bfbd efbf bdef ......=)L....... 
0000130: bfbd 61ef bfbd 382c 7525 3252 67ef bfbd ..a...8,u%2Rg... 
0000140: 3edd be57 efbf bdef bfbd 20cf 9b4a efbf >..W...... ..J.. 
0000150: bd3c efbf bd21 efbf bd47 efbf bdef bfbd .<...!...G...... 
0000160: 410b efbf bdef bfbd 5c6c 46ef bfbd efbf A.......\lF..... 
0000170: bd18 24ef bfbd 5448 efbf bd43 efbf bd3b ..$...TH...C...; 
0000180: 0d0a d8aa 74ef bfbd 7852 efbf bdef bfbd ....t...xR...... 
0000190: 11ef bfbd efbf bd7e efbf bd5e 5eef bfbd .......~...^^... 
00001a0: 69ef bfbd 321a efbf bdef bfbd 58ef bfbd i...2.......X... 
00001b0: 43ef bfbd 4c15 0eef bfbd efbf bd64 1bef C...L........d.. 
00001c0: bfbd efbf bd26 efbf bdef bfbd 0833 efbf .....&.......3.. 
00001d0: bd49 efbf bd1c efbf bd4d efbf bd09 efbf .I.......M...... 
00001e0: bdef bfbd efbf bd5f 02ef bfbd efbf bd19 ......._........ 
00001f0: efbf bdd8 94ef bfbd efbf bdef bfbd efbf ................ 
0000200: bdef bfbd efbf bdef bfbd 3d5c efbf bdef ..........=\.... 
0000210: bfbd efbf bdef bfbd 42ef bfbd efbf bdef ........B....... 
0000220: bfbd efbf bdc2 9840 efbf bd4e 32ef bfbd [email protected] 
0000230: c6b2 efbf bdef bfbd 39ef bfbd 0355 efbf ........9....U.. 
0000240: bd53 504c 1742 3155 20ef bfbd 5421 efbf .SPL.B1U ...T!.. 
0000250: bd6b efbf bd30 78ef bfbd 70ef bfbd efbf .k...0x...p..... 
0000260: bddc 9e23 48ef bfbd 421a 62ef bfbd efbf ...#H...B.b..... 
0000270: bd11 31ef bfbd 196c efbf bd35 d884 0d0a ..1....l...5.... 
0000280: 5f31 efbf bd4f efbf bd2c efbf bd0f efbf _1...O...,...... 
0000290: bd24 1b4f 3eef bfbd dfb8 efbf bdef bfbd .$.O>........... 
00002a0: 5064 0d0a 6def bfbd 1b61 efbf bd6b 447c Pd..m....a...kD| 
00002b0: 3def bfbd efbf bd04 47ef bfbd 091b 0f56 =.......G......V 
00002c0: 6eef bfbd 36ef bfbd efbf bdef bfbd 5bc4 n...6.........[. 
00002d0: ae64 20ef bfbd 1fe6 a19a 28ef bfbd efbf .d .......(..... 
00002e0: bdef bfbd 5014 efbf bdef bfbd efbf bd1d ....P........... 
00002f0: 6def bfbd 2eef bfbd 3051 efbf bdef bfbd m.......0Q...... 
0000300: 6027 0446 6223 26ef bfbd dca7 36ef bfbd `'.Fb#&.....6... 
0000310: 61ef bfbd efbf bd50 efbf bdef bfbd efbf a......P........ 
0000320: bdef bfbd d78f 51ef bfbd efbf bd31 efbf ......Q......1.. 
0000330: bd32 5b0f efbf bd2b 1b7a efbf bd69 efbf .2[....+.z...i.. 
0000340: bd07 3b20 efbf bdef bfbd 5def bfbd 4331 ..; ......]...C1 
0000350: 37ef bfbd d0be 7019 efbf bd49 39cc be6a 7.....p....I9..j 
0000360: 44ef bfbd 7def bfbd c29b 3f37 6179 7a01 D...}.....?7ayz. 
0000370: 65ef bfbd 2c68 5841 4bef bfbd 0eef bfbd e...,hXAK....... 
0000380: 5e33 efbf bd2a 626b 0bef bfbd efbf bd04 ^3...*bk........ 
0000390: 06ef bfbd 401a efbf bd2b 7751 3d21 efbf [email protected]+wQ=!.. 
00003a0: bdef bfbd 7d12 75ef bfbd efbf bd58 7aef ....}.u......Xz. 
00003b0: bfbd efbf bdef bfbd efbf bd06 efbf bd0e ................ 
00003c0: 1eef bfbd efbf bd71 023a 670e ecaf baef .......q.:g..... 
00003d0: bfbd 6e3d 0cef bfbd efbf bdef bfbd 3aef ..n=..........:. 
00003e0: bfbd 642b 5fef bfbd efbf bdef bfbd 1aef ..d+_........... 
00003f0: bfbd 47ef bfbd efbf bdef bfbd 1d54 efbf ..G..........T.. 
0000400: bdef bfbd 413b efbf bd03 d590 0c4a 0717 ....A;.......J.. 
0000410: 0eef bfbd c6a3 efbf bd2e 18ef bfbd efbf ................ 
0000420: bd21 50ef bfbd efbf bd29 3521 efbf bdef .!P......)5!.... 
0000430: bfbd efbf bd12 efbf bd48 3aef bfbd efbf .........H:..... 
0000440: bdef bfbd efbf bdef bfbd 6570 efbf bdef ..........ep.... 
0000450: bfbd d680 19ef bfbd efbf bd22 efbf bd1b ...........".... 
0000460: efbf bdef bfbd efbf bddd 82ef bfbd efbf ................ 
0000470: bdef bfbd efbf bd22 efbf bd4b 7911 16ef ......."...Ky... 
0000480: bfbd 777c efbf bd7b 1a48 efbf bd32 1121 ..w|...{.H...2.! 
0000490: 69ef bfbd 04ef bfbd 7e33 7a5f 58ef bfbd i.......~3z_X... 
00004a0: 3b6f efbf bdef bfbd 6b42 5a4b 2a04 0d0a ;o......kBZK*... 
00004b0: 5eef bfbd 5211 efbf bdef bfbd efbf bdef ^...R........... 
00004c0: bfbd 3a4f efbf bd28 03ef bfbd efbf bd6a ..:O...(.......j 
00004d0: 0846 efbf bdef bfbd 052a 5eef bfbd efbf .F.......*^..... 
00004e0: bdc8 b0ef bfbd 53ef bfbd efbf bde8 afbf ......S......... 
00004f0: efbf bd5f efbf bd0b 67d0 acef bfbd 79ef ..._....g.....y. 
0000500: bfbd efbf bd63 2020 2020 4945 4e44 efbf .....c IEND.. 
0000510: bd42 60ef bfbd 0d0a      .B`..... 

這個任何線索?

+1

有什麼不同的字符?你是否真的逐字節地比較了數值是否相同?二進制「垃圾」看起來會有所不同,這取決於客戶如何在字體和字符集方面對待它。 –

+1

比較作爲文本呈現的二進制數據對我來說沒有意義。尤其是使用Accept-Encoding標頭集。 – CodeZombie

+0

我發佈了與PHP發送的圖像相對應的二進制數據,然後由C#接收。 – Cedric

回答

1

UTF-8旨在編碼Unicode字符集。它通常不能用於對任意二進制數據進行編碼,因爲(取決於實現)當二進制數據表示非法Unicode字符時,它可能會行爲不當。

您需要將未經編碼的二進制形式或者用於任意二進制數據的Base64等編碼的請求從PHP傳遞到您的C#程序。

+0

確實!在我的同事進行了長時間的搜索和幫助之後,我發現如果添加頭Content-Transfer-Encoding:base64',請求的每一邊都保持不變! – Cedric

1

好吧,看起來它不會將PNG解析爲圖片,但會讀取png圖片的二進制內容(嘗試在此處做「圖片名稱」,如果輸出看起來與解析的數據相同,那麼我正確)

+0

我將這兩個請求轉換爲二進制數據,就像您在編輯的問題中看到的那樣。圖片的PHP請求與cat「image」相同,並且圖片的C#請求不相同。雖然,當文件請求保存在Windows中時,圖像渲染似乎是正常的。 – Cedric