アプリケーションにテキスト ボックスがあり、テキスト ボックスからのテキストは、POST 要求を介して投稿データとして送信されます。£ や $ などの記号をテキスト内に含めると、疑問符に変換されます。
これが起こらないようにするために必要なエンコードはありますか
編集相手側のサーバーにアクセスできません。
アプリケーションにテキスト ボックスがあり、テキスト ボックスからのテキストは、POST 要求を介して投稿データとして送信されます。£ や $ などの記号をテキスト内に含めると、疑問符に変換されます。
これが起こらないようにするために必要なエンコードはありますか
編集相手側のサーバーにアクセスできません。
私は、.NETがURLエンコードに提供するさまざまな方法を試してきました。おそらく、次の表が役立つでしょう:
Unencoded UrlEncoded UrlEncodedUnicode UrlPathEncoded EscapedDataString EscapedUriString HtmlEncode HtmlAttributeEncode HexEscape
A A A A A A A A %41
B B B B B B B B %42
C C C C C C C C %43
D D D D D D D D %44
a a a a a a a a %61
b b b b b b b b %62
c c c c c c c c %63
d d d d d d d d %64
0 0 0 0 0 0 0 0 %30
1 1 1 1 1 1 1 1 %31
2 2 2 2 2 2 2 2 %32
3 3 3 3 3 3 3 3 %33
[space] + + %20 %20 %20 [space] [space] %20
! ! ! ! ! ! ! ! %21
" %22 %22 " %22 %22 " " %22
# %23 %23 # %23 # # # %23
$ %24 %24 $ %24 $ $ $ %24
% %25 %25 % %25 %25 % % %25
& %26 %26 & %26 & & & %26
' %27 %27 ' ' ' ' ' %27
( ( ( ( ( ( ( ( %28
) ) ) ) ) ) ) ) %29
* * * * * * * * %2A
+ %2b %2b + %2B + + + %2B
, %2c %2c , %2C , , , %2C
- - - - - - - - %2D
. . . . . . . . %2E
/ %2f %2f / %2F / / / %2F
: %3a %3a : %3A : : : %3A
; %3b %3b ; %3B ; ; ; %3B
< %3c %3c < %3C %3C < < %3C
> %3e %3e > %3E %3E > > %3E
= %3d %3d = %3D = = = %3D
? %3f %3f ? %3F ? ? ? %3F
@ %40 %40 @ %40 @ @ @ %40
[ %5b %5b [ %5B %5B [ [ %5B
] %5d %5d ] %5D %5D ] ] %5D
\ %5c %5c \ %5C %5C \ \ %5C
^ %5e %5e ^ %5E %5E ^ ^ %5E
_ _ _ _ _ _ _ _ %5F
` %60 %60 ` %60 %60 ` ` %60
{ %7b %7b { %7B %7B { { %7B
} %7d %7d } %7D %7D } } %7D
| %7c %7c | %7C %7C | | %7C
~ %7e %7e ~ ~ ~ ~ ~ %7E
Ā %c4%80 %u0100 %c4%80 %C4%80 %C4%80 Ā Ā [OoR]
ā %c4%81 %u0101 %c4%81 %C4%81 %C4%81 ā ā [OoR]
Ē %c4%92 %u0112 %c4%92 %C4%92 %C4%92 Ē Ē [OoR]
ē %c4%93 %u0113 %c4%93 %C4%93 %C4%93 ē ē [OoR]
Ī %c4%aa %u012a %c4%aa %C4%AA %C4%AA Ī Ī [OoR]
ī %c4%ab %u012b %c4%ab %C4%AB %C4%AB ī ī [OoR]
Ō %c5%8c %u014c %c5%8c %C5%8C %C5%8C Ō Ō [OoR]
ō %c5%8d %u014d %c5%8d %C5%8D %C5%8D ō ō [OoR]
Ū %c5%aa %u016a %c5%aa %C5%AA %C5%AA Ū Ū [OoR]
ū %c5%ab %u016b %c5%ab %C5%AB %C5%AB ū ū [OoR]
列は次のようにエンコーディングを表します。
UrlEncoded:HttpUtility.UrlEncode
UrlEncodedUnicode:HttpUtility.UrlEncodeUnicode
UrlPathEncoded:HttpUtility.UrlPathEncode
EscapedDataString:Uri.EscapeDataString
EscapedUriString:Uri.EscapeUriString
HtmlEncode:HttpUtility.HtmlEncode
HtmlAttributeEncode:HttpUtility.HtmlAttributeEncode
HexEscape:Uri.HexEscape
ノート:
HexEscapeは、最初の255文字のみを処理できます。したがって、ラテンA拡張文字(例:Ā)に対してArgumentOutOfRange例外がスローされます。
私のテーブルの文字は、ASCII / Unicodeの昇順で正確に並べられていません(たとえば、[、]、\の順序が正しくありません)。
これらの文字を投稿可能なデータに変換する C# を使用した URLEncode URL Encoding を見たいと思うかもしれません
ページのタグに<meta charset='utf-8'>
またはを追加してみてください。<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
また、サイトの web.config をチェックして、そこで設定されているグローバリゼーション設定を確認してください。明示的に utf-8 に設定すると役立つ場合があります。
参照: http://msdn.microsoft.com/en-us/library/39d1w2xf.aspx
基本的な http URL エンコーディングでは、$ を %24 に置き換えますが、ここでは問題ではないようです。URLEncode を使用してから、反対側でデコードすることもできます。または、これをペイロードの一部として送信している場合は、使用している文字エンコーディングを指定する必要がある場合があります (一方は ASCII を使用し、もう一方は UTF-8 を使用しているか、この効果のために何かを使用しており、次のようにガベージを取得しています。結果)。