为什么 rtf 字符串应用于阿拉伯语文本时给出“????“,而不是对其应用格式
本文关键字:格式 应用 rtf 文本 阿拉伯语 应用于 为什么 字符串 | 更新日期: 2023-09-27 18:36:18
我正在尝试通过提取标题样式的 rtf 字符串来应用标题样式,就像 MS Word 中一样。实际上,rtf 字符串适用于英语文本并对其应用格式,但是当它应用于乌尔都语文本时,它会给出格式化的"????"。
让我从例子中解释一下你们:
我选择用乌尔都语写的单词为"اللغة العربية",我已经有一个 rtf 字符串,其中包含 MS Word 标题样式的 rtf: {'rtf1'ansi'ansicpg1252... "اللغة العربية"...}
我在其中添加此字符串以获取格式化字符串。
但是它没有给我格式化的 اللغة العربية,而是给出了格式化的问号"????",我认为这是一个编码或字体问题。所以请告诉我如何将 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。