1

我正在尝试通过提取标题样式的 rtf 字符串来应用 MS Word 中的标题样式。实际上,rtf 字符串适用于英文文本并对其应用格式,但是当它应用于乌尔都语文本时,它会给出格式化的“????”。

让我从示例中向你们解释:

我选择用乌尔都语写的单词为“اللغة العربية”,我已经有一个 rtf 字符串,其中包含 MS Word 的标题样式的 rtf: {\rtf1\ansi\ansicpg1252... "اللغة العربية"...}我在其中添加此字符串以获得格式化的字符串。

但它没有给我格式化的 الغة العربية,而是给出格式化的问号“????” 我认为这是一个编码或字体问题。那么请告诉我如何将 rtf 字符串应用于乌尔都语以获取格式化文本?

4

1 回答 1

0

您需要使用函数将字符串中的 unicode 字符转换为相应的 rtf 代码:

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();
}

在这里找到:https ://stackoverflow.com/a/9988686/1543816

整数值大于 127(7f hex)的字符将被转换为 \uxxxx?其中 xxxx 是字符的 unicode。

于 2013-10-22T13:38:24.800 回答