我使用以下URL调用我的Rest WebService:
... /Service.svc/ChangeMasterData/10?MeasureTypeID=100&LastName=%E4%F6%F6ABC
但是在我的webservice c#代码后面没有得到正确的字符串“äööABC”,字符串只包含“ ABC”。
我忘记了什么提示?
---有关C#代码部分的其他信息---
IService.cs
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "ChangeMasterData/{UserID}?MeasureTypeID&{MeasureTypeID}&LastName={LastName});
Service.svc.cs
public string ChangeMasterData(string UserID, string MeasureTypeID, string LastName)
{
// LastName contains "���ABC" instead of "äööABC"
...
}
来自被叫URL的Fiddler的HexView:
答案 0 :(得分:1)
... /Service.svc/ChangeMasterData/10?MeasureTypeID=100&LastName=%E4%F6%F6ABC
除非您处于RFC 3987之前的日子,否则您不应该选择任意编码作为在ASCII中编码非ASCII字符的基础,因此应将其视为R version 3.1.1 (2014-07-10)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
[5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8
[7] LC_PAPER=en_GB.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] graphics grDevices utils datasets stats methods base
other attached packages:
[1] tm_0.6-2 NLP_0.1-8 RTextTools_1.4.2 SparseM_1.6
[5] SnowballC_0.5.1 reshape2_1.4.1 ggplot2_1.0.0 plyr_1.8.1
loaded via a namespace (and not attached):
[1] bitops_1.0-6 caTools_1.17.1 class_7.3-11
[4] codetools_0.2-9 colorspace_1.2-4 digest_0.6.8
[7] e1071_1.6-4 foreach_1.4.2 glmnet_2.0-2
[10] grid_3.1.1 gtable_0.1.2 ipred_0.9-4
[13] iterators_1.0.7 lattice_0.20-29 lava_1.4.1
[16] MASS_7.3-34 Matrix_1.1-4 maxent_1.3.3.1
[19] munsell_0.4.2 nnet_7.3-8 parallel_3.1.1
[22] prodlim_1.5.1 proto_0.3-10 randomForest_4.6-10
[25] Rcpp_0.11.3 rpart_4.1-8 scales_0.2.4
[28] slam_0.1-32 splines_3.1.1 stringr_0.6.2
[31] survival_2.37-7 tau_0.0-18 tcltk_3.1.1
[34] tools_3.1.1 tree_1.0-36
,{{最后可能是1}}或者LastName=���ABC
。
而不是获得正确的字符串“äööABC”
如果这是你想要的,你应该使用LastName=��ABC
答案 1 :(得分:0)
此部分%E4%F6%F6
看起来像是ISO-8859-1
个字符的网址编码,但您的网络服务可能需要UTF-8
。在进行URL编码之前,请确保您的字符串是UTF-8,或者确保URL编码器理解您希望它编码为UTF-8。
在Javascript中encodeURIComponent(str)
或encodeURI(str)
。 Javascript escape
部分弃用,因为它以非标准方式编码非ASCII字符。