gpt4 book ai didi

c# - 计算包含 Unicode 字符的字符串的长度

转载 作者:行者123 更新时间:2023-11-30 16:56:04 26 4
gpt4 key购买 nike

我们一直在努力计算包含 Unicode 字符的字符串的长度例如(Word characters such as '),然后将其粘贴到我们系统的文本区域中得救。当我们需要返回相同的保存字符串并且我们需要计算我们的响应 content-length 时,普通的 c# string.Length 不能正确计算长度,因为 Unicode 有超过一个字符。

我们已尝试使用 System.Globalization.StringInfo 类来读取字符数量,但无济于事,因为它仍然无法满足请求的正确长度。例如,由于长度太短,Json 响应对象的最后一个右大括号被浏览器截断。

如果有人可以阐明他们使用过的有效的东西,我们将不胜感激。到目前为止我们尝试了什么:

    Response.AddHeader("content-length", content.GetType() == typeof(string) ? 
new System.Globalization.StringInfo(content.ToString()).LengthInTextElements.
ToString() : ((byte[])content).Length.ToString());

最佳答案

给定一个任意字节 block ,您知道它代表一些文本,并且使用 UTF8 编码,了解实际字符数的唯一方法是解码文本。例如。通过将其传递给 Encoding.UTF8.GetString()。然后你只要看看返回的string的长度就可以了。

也就是说,HTTP 响应的 Content-Length 字段应该以字节为单位指示响应的长度。如果你必须自己设置长度,你应该只使用总字节数。但是如果你使用例如HttpResponse我希望此字段会代表您自动设置。

关于c# - 计算包含 Unicode 字符的字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28479343/

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