计算包含Unicode字符的字符串的长度

时间:2015-02-12 13:58:57

标签: c# json string unicode httpresponse

我们一直在努力计算包含Unicode字符e.g (Word characters such as ’)的字符串的长度,这些字符被粘贴到我们的系统text-area's然后被保存。当我们需要返回相同的已保存字符串时,我们需要计算响应content-length正常c#字符串。由于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());

1 个答案:

答案 0 :(得分:1)

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

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