• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#のGUIからサーバー側のPHPへ文字列を送信)

C#のGUIからサーバー側のPHPへ文字列を送信するプログラムについて

このQ&Aのポイント
  • C#のGUIからサーバー側のPHPへ文字列を送信するプログラムを作成中です。質問箇所は、C# GUI側のコードでURLエンコードされた文字列をアスキーコードに変換している箇所です。このアスキーコードはPHP側で復元され、さらにURLデコードされてマルチバイト文字にまで復元されます。詳細についてお知恵をいただきたいです。
  • C#のGUIからサーバー側のPHPへ文字列を送信するプログラムを作成中です。具体的には、C#のGUI側ではURLエンコードされた文字列をアスキーコードに変換し、そのままHTTPリクエストを送信しています。一方、PHP側では受け取ったアスキーコードをURLデコードして元の文字列に戻しています。この処理の意図や必要性について教えてください。
  • C#のGUIからサーバー側のPHPへ文字列を送信するプログラムを作成中です。その過程でC#側でURLエンコードされた文字列をアスキーコードに変換して送信していますが、PHP側で受け取ったアスキーコードは自動的にURLデコードされ、元の文字列に復元されます。この処理の意味や理由について詳しく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>そのアスキー文字をPHP側にリクエストしているのですが、これってPHP側で勝手にアスキー文字をもとのurlencodeの状態に復元し、さらにurldecodeして CとかC++のコンパイルって個人的に苦戦する印象があるので途中で追うのやめているから自信ないけど、たぶんそういうことやっていると思うよ、「PHP"で"書いたコード」ではなく「PHP自体の、Cで書かれたソースコード」に以下のような記述があるからね。 https://github.com/php/php-src/blob/master/main/php_variables.c#L230 この辺追うのもおもしろそうだったけど、やめといた。 https://www.codeblog.org/blog/moriyoshi/20060314.html #まったくGUIとかC#関係ありません(笑) ================= ところで。 >マルチバイトの文字の状態にまで復元して表示しているということなのでしょうか? の部分に個人的にちょっと引っかかったなー $x = "abc"; ってさ、C#でいうと、 String x = "abc"; じゃなくて byte[] x = System.Text.Encoding.ASCII.GetBytes("abc"); だと思うんだよなー 。文字列連結演算子も public static String SomeOperator(String s1,String s2){ return s1.Concat(s2); } じゃなくて public static byte[] SomeOperator(byte[] s1,byte[] s2){ byte[] retval = new byte[s1.Length + s2.Length); s1.CopyTo(retval,0); s2.CopyTo(retval,s1.Length); return retval; } 的なやつ。設定次第では外側でEncoding.GetStringを使っているから安全そうなことがあるだけで。

1000vicki
質問者

お礼

ありがとうございます。 参考にします。(

関連するQ&A