我有一个仅支持本机数据类型的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参数的一部分,我想尽可能保留它。
答案 0 :(得分:0)
您可以选择在App_B中对字节数组进行反序列化时支持不同的编码吗?我建议修改App_A,以便每个发送的字符串都有一个额外的第一个字节来定义编码,然后App_B必须遵守该编码。这样,只要两个应用都支持,您使用哪种编码并不重要。
我强烈建议您不要像在\u
之前所描述的那样修改字符串,以后需要记录下来的一堆代码好的,如果你以后再回来等,需要再次理解。