gpt4 book ai didi

c# - 将 UTF-8 字符串放入字符串类型的变量中

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:25 26 4
gpt4 key购买 nike

好吧,对于令人困惑的标题感到抱歉,但我在 C#.NET 中遇到了一个有点烦人的字符编码问题

我有一堆从 WSDL 文件生成的类,这些类的方法采用字符串参数,然后将这些参数提交到远程 Web 服务。此远程 Web 服务要求所有文本输入都采用 UTF-8 编码。现在,据我所知,确实没有办法在 C#.NET UTF-8 编码中制作字符串,它是 UTF-16 或什么都不是,如果我想要 UTF-8,我必须将它设为 byte[],对吧?

所以,我的大问题是,我应该如何将我的原始 UTF-8 byte[] 数据放入一个字符串中,以便我可以实际将它提交给 Web 服务?我的意思是,当然,我可能会退回到 C 风格的代码,逐字节循环整个事情,但微软在设计语言和 API 时肯定已经考虑过这一点? (虽然我的 Vista 笔记本电脑认为在内部使用 UTF-16 是完全正确的,cp1252 用于某些东西,UTF-8 用于其他一些东西,cp850(!)用于其他一些东西,如果他们不这样做我也不会太惊讶) .

那么,我是坚持以丑陋的方式做事,还是在 .NET 的深处有一些隐藏的 System.Text.EncodeStuffTherightWay.EncodeStringAsUTF8(string) 方法?

最佳答案

字符串从不包含任何utf-* 或任何其他编码;那不是他们的工作。它们是字符串——字符/代码点数据组。您拥有的 byte[] 是编码形式。

几乎在我能想到的任何情况下,传输等都应该已经为您完成了。如果不是,那么这听起来像是 wsdl 或网络服务堆栈本身的错误。

请记住,wsdl 本身只有 xs:string - 如果这还不够(即 与握手结合 是不够的),那么它根本不是网络服务字符串。

另一种方法是将其作为 byte[] 进行处理,并通过

手动编码
byte[] bytes=Encoding.UTF8.GetBytes(yourString);

关于c# - 将 UTF-8 字符串放入字符串类型的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3698696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com