使用String变量格式化String作为Format字符串

时间:2015-09-09 08:35:32

标签: c# string formatting

我有一个仅支持本机数据类型的COM服务器应用程序(App_A)。我通过COM服务器将参数发送到C#应用程序(App_B),然后作为Web请求发送数据。

我的问题是App_A读取的String数据是Unicode,但App_A不支持其COM字符串值的非UTF-8编码,因此数据可以作为字节数组或char数组发送。

如果我使用字节数组,那么通用的App_B现在已经被打破,因为我现在必须以不同的方式处理这个单一数据更新(我担心会有更多),所以我想保持App_B处理of generic(obj.ToString)。

如果我将App_B C#String硬编码为文字,例如" \ u5f90",String包含一个Unicode字符,App_B中的HttpUtility.UrlEncode调用完全按预期工作。如果String作为值传入(obj.ToString()=" \ u5f90")' \'转义并且UrlEncode不会对Unicode字符进行UTF-8编码,因为' \ u'转义序列丢失了。

我想我的问题归结为:

到目前为止,我已经操纵了App_A中的字节数组,用' \ uxxxx'替换了Unicode值(xxxx): - 有什么办法可以在C#中使用String变量作为格式字符串APP_B?

或者,如果我以错误的方式解决这个问题,那会有什么建议吗?

请记住,我有大约300个数据值更新,它们都使用泛型o.ToString作为UrlEncode参数的一部分,我想尽可能保留它。

1 个答案:

答案 0 :(得分:0)

您可以选择在App_B中对字节数组进行反序列化时支持不同的编码吗?我建议修改App_A,以便每个发送的字符串都有一个额外的第一个字节来定义编码,然后App_B必须遵守该编码。这样,只要两个应用都支持,您使用哪种编码并不重要。

我强烈建议您不要像在\u之前所描述的那样修改字符串,以后需要记录下来的一堆代码好的,如果你以后再回来等,需要再次理解。