我的应用程序中有一个文本框,文本框中的文本通过POST请求作为发布数据发送。如果我在文本中包含任何符号,例如£或$,则将它们转换为问号。
我是否需要做任何编码才能阻止这种情况发生
编辑我无法访问另一端的服务器。
答案 0 :(得分:1)
我一直在尝试.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个字符。因此,它会为Latin A-Extended字符抛出ArgumentOutOfRange异常(例如Â)。
我的表格中的字符并非完全按升序ASCII / Unicode顺序排序(例如[,],\是乱序)。
答案 1 :(得分:0)
您可能希望查看将这些字符转换为可发布数据的URLEncode URL Encoding using C#
答案 2 :(得分:0)
尝试将<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
答案 3 :(得分:0)
基本的http url编码会换掉$ for%24,但这听起来不像是这里的问题。您可能想要使用URLEncode,然后在另一端解码它。或者,如果您将此作为有效负载的一部分发送,则可能需要指定您正在使用的字符编码(一方使用ASCII,另一方使用其他UTF-8或其他类似的东西)结果)。