WCF和自定义文本编码 - 凌乱的业务

时间:2011-03-20 15:36:52

标签: wcf character-encoding diacritics custom-binding

我这里有一个非常奇怪的WCF问题......

我们正在连接糟糕的第三方网络服务;这是一个噩梦甚至让它继续下去,我们不得不创建一个自定义的WCF绑定,因为那些人​​决定使用“ISO-8859-1”作为他们的文本编码(而不是像网络上的其他人一样使用UTF-8),以及其他设置也很混乱 - 当然没有任何记录......

它现在已经工作了一段时间,但突然之间,我们的一些数据又重新出现了。我们希望能够找到地方的名字,并且在瑞士,其中一些有德国变形金刚。但在过去的两三个月里,我们突然回来了

Hünibach

而不是正确的

Hünibach

所以ü(你的变音符号)被破坏了。

没问题,我认为他们最终切换到UTF-8,我改变了我的自定义绑定,使用UTF-8作为文本编码器而不是ISO-8859-1 - 但没有运气 - 没有我得到:< / p>

  

EXCEPTION:System.ServiceModel.Security.MessageSecurityException
  客户端身份验证方案“基本”禁止HTTP请求。

f ?????该服务受用户名/密码的保护,我们使用WCF的ClientCredentials传入该用户名/密码。似乎改变文本编码会以某种方式弄乱凭证!?!?!怪异.....

好的 - 回到ISO-8859-1,我只是试图将响应有效载荷解释为UTF-8 - 再次没有运气:-(尝试使用UTF-16,UTF-32,UTF-7甚至,Unicode, BigEndianUnicode - 一切都无济于事。

那么我怎么能找回我的正确的变形虫,仍然可以称之为血腥的服务......在SoapUI中工作得很好,顺便说一下......

任何想法?我拼命地抓住你可能扔给我的任何吸管!!

2 个答案:

答案 0 :(得分:1)

尝试检查您要回来的数据,看看他们用来代表它的数字代码。变音符号是8859-1中与其他角色共享代码的其中一个字符。

见第二段 - http://en.wikipedia.org/wiki/%C3%9C#Typography

答案 1 :(得分:1)

实际上,我终于找出了问题所在。

出于某种原因,更改样本CustomTextEncoder(由Microsoft在WCF和WF样本中提供)以使用UTF-8而不是ISO-8859-1 不起作用

另一方面,从我的自定义绑定中删除自定义文本编码器,只使用WCF从get go(默认情况下使用UTF-8)提供的标准TextMessageEncoder 确实有效< /强>

不要问我为什么......那只是我发现的事实......