为什么 rtf 字符串应用于阿拉伯语文本时给出“????“,而不是对其应用格式

本文关键字:格式 应用 rtf 文本 阿拉伯语 应用于 为什么 字符串 | 更新日期: 2023-09-27 18:36:18

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

让我从例子中解释一下你们:

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

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

为什么 rtf 字符串应用于阿拉伯语文本时给出“????“,而不是对其应用格式

您需要使用函数将字符串中的 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 十六进制)的字符将转换为 ''uxxxx? 其中 xxxx 是字符的 unicode。

相关文章: