将包含带重音的单词的字符串列表添加到 RichEditText 框的正确方法

问题描述

我正在尝试将包含特殊字符(例如重音符号)的字符串列表添加到 RichEditText 框。准确地说,是人名列表。例如,有些是法语和西班牙语。不幸的是,这些特殊字符显示不正确。

我目前正在执行以下操作:

aRichEditTextBox.Lines = nameList.ToArray();

例如……我得到的不是“Añazgo”,而是“Añazgo”。

解决此问题的正确或最佳方法是什么?

解决方法

你必须使用 RTF 格式的 Richtextbox 来识别那些特殊字符, 使用来自这里的这种方法 - RichTextBox and special chars c#

static string GetRtfUnicodeEscapedString(string s)
{
    var sb = new StringBuilder();
    foreach (var c in s)
    {
        if(c == '\\' || c == '{' || c == '}')
            sb.Append(@"\" + c);
        else if (c <= 0x7f)
            sb.Append(c);
        else
            sb.Append("\\u" + Convert.ToUInt32(c) + "?");
    }
    return sb.ToString();
}

richtextbox1.Rtf = GetRtfUnicodeEscapedString(TextString);