5

これは暗闇の中のショットであり、この質問が狂人のとりとめのないように聞こえる場合は、事前にお詫び申し上げます.

サード パーティとの統合の一環として、C# を使用して一部の文字列情報を UTF8 エンコードする必要があるため、マルチパート フォーム経由でターゲット サーバーに送信できます。問題は、おそらく私が内容を正しくエンコードしていないために、彼らが私の投稿の一部を拒否していることです。

現在、ダッシュまたはハイフンがどのように受信され、ターゲット サーバーによってどのように解釈されるかを理解しようとしてい?~@~Sます。ブラウザの不具合ではありません)。Encoding.UTF8.GetBytes()残念ながら、バイト配列を使用して問題がどこにあるのかを特定する方法を十分に理解していません。

誰かがヒントやアドバイスを提供できる場合は、それをいただければ幸いです。これまでのところ、私の唯一の友人は MSDN であり、MSDN の友人はほとんどいません。

更新 1 : さらに掘り下げた後System.Web.HttpUtility.UrlEncode()、EM DASH 文字 ("—") をエンコードするために使用すると、"%e2%80%94" に 16 進エンコードされることがわかりました。

HttpWebRequest現在、この情報を「application/x-www-form-urlencoded」というコンテンツ タイプの投稿で送信しています。これが問題の原因でしょうか? もしそうなら、値に Unicode 文字が含まれている可能性のある一連の名前と値のペアをエンコードして、UTF-8 要求を期待しているサーバーが理解できるようにする適切な方法は何ですか?

4

2 に答える 2

3
byte[] test = System.Text.Encoding.UTF8.GetBytes("-");

あなたに与えるべきです

test[0] = 0x2D (45 as integer).  

ターゲット サーバーに 0x2D を送信していることを確認します。

于 2011-01-28T23:48:55.053 に答える
1

Content-Type ヘッダーに「charset=utf-8」パラメーターを追加する必要がある場合があります。 エンコーディングを設定するヘッダーが必要な場合もあります。Content-Encoding ヘッダーには次のものが含まれている必要があります。

コンテンツ タイプ: マルチパート/フォーム データ。文字セット=utf-8

そうしないと、Web サーバーはあなたのバイトが UTF-8 バイトであることを認識できず、誤って解釈してしまいます。

于 2011-01-28T23:53:07.183 に答える