计算包含 Unicode 字符的字符串的长度
Calculating length of string that contains Unicode characters
我们一直在努力计算包含 Unicode 字符 e.g (Word characters such as ’)
的字符串的长度,这些字符被粘贴到我们系统的 text-area's
中然后被保存。当我们需要 return 相同的保存字符串并且我们需要计算我们的 Response content-length
时,正常的 c#
string.Length 不能正确计算长度,因为 Unicode 有多个字符.
我们已尝试使用 System.Globalization.StringInfo
class 来读取字符数量,但无济于事,因为它仍然无法满足请求的正确长度。例如,Json 响应对象的最后一个右花括号由于长度太短而被浏览器截断。
如果有人可以阐明他们使用过的有效的东西,我们将不胜感激。到目前为止我们尝试了什么:
Response.AddHeader("content-length", content.GetType() == typeof(string) ?
new System.Globalization.StringInfo(content.ToString()).LengthInTextElements.
ToString() : ((byte[])content).Length.ToString());
给定一个任意字节块,您知道它代表一些文本,并且使用 UTF8 编码,了解实际字符数的唯一方法是解码文本。例如。通过将其传递给 Encoding.UTF8.GetString()
。然后你只看返回的string
的长度。
也就是说,HTTP 响应的 Content-Length
字段应该以字节为单位指示响应的长度。如果你必须自己设置长度,你应该只使用总字节数。但是如果你使用例如HttpResponse
我希望系统会自动为您设置此字段。
我们一直在努力计算包含 Unicode 字符 e.g (Word characters such as ’)
的字符串的长度,这些字符被粘贴到我们系统的 text-area's
中然后被保存。当我们需要 return 相同的保存字符串并且我们需要计算我们的 Response content-length
时,正常的 c#
string.Length 不能正确计算长度,因为 Unicode 有多个字符.
我们已尝试使用 System.Globalization.StringInfo
class 来读取字符数量,但无济于事,因为它仍然无法满足请求的正确长度。例如,Json 响应对象的最后一个右花括号由于长度太短而被浏览器截断。
如果有人可以阐明他们使用过的有效的东西,我们将不胜感激。到目前为止我们尝试了什么:
Response.AddHeader("content-length", content.GetType() == typeof(string) ?
new System.Globalization.StringInfo(content.ToString()).LengthInTextElements.
ToString() : ((byte[])content).Length.ToString());
给定一个任意字节块,您知道它代表一些文本,并且使用 UTF8 编码,了解实际字符数的唯一方法是解码文本。例如。通过将其传递给 Encoding.UTF8.GetString()
。然后你只看返回的string
的长度。
也就是说,HTTP 响应的 Content-Length
字段应该以字节为单位指示响应的长度。如果你必须自己设置长度,你应该只使用总字节数。但是如果你使用例如HttpResponse
我希望系统会自动为您设置此字段。