宁静的服务收到“ ”而不是变音符号

时间:2015-07-16 08:14:05

标签: c# web-services rest

我使用以下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:

enter image description here

2 个答案:

答案 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字符。