c#中截取 中英文混排的长度200,确保不乱码显示
时间: 2024-09-10 20:18:34 浏览: 47
在 C# 中,如果你需要截取中英文混排的字符串并确保不乱码地显示200个字符,你可以使用 `string.Substring` 函数配合 Unicode 编码处理。以下是一个示例:
```csharp
string input = "这是一个包含中英文混排的字符串,比如中文 '你好世界' 和英文 'Hello World'"; // 输入的字符串
int maxLength = 200;
if (input.Length > maxLength)
{
// 使用 UTF-16 或 UTF-8 的 Encoding.UTF16Chars.ToString 方法计算非Unicode字符数
int nonUnicodeChars = Encoding.UTF16.GetByteCount(input);
// 计算实际可以显示的字符数,考虑每个非Unicode字符占用2个字节
int safeLength = Math.Min(maxLength, nonUnicodeChars / 2); // 因为每个UTF-16编码字符占2个字节
// 截取字符串,并使用 Unicode 字符串表示法
string truncatedString = input.Substring(0, safeLength).Normalize(NormalizationForm.FormD);
}
else
{
truncatedString = input;
}
Console.WriteLine(truncatedString);
阅读全文