C# 为什么将rtf字符串应用于阿拉伯语文本时会给出“?”而不是格式?
我试图通过提取标题样式的rtf字符串来应用MS Word中的标题样式。实际上,rtf字符串适用于英文文本,并对其应用格式,但当它应用于乌尔都语文本时,它会给出格式 让我给你们解释一下例子: 我选择用乌尔都语写的单词作为الغا㶊عبية,我已经有了一个rtf字符串,其中包含MS word标题样式的rtf,如下所示: {\rtf1\ansi\ansicpg1252…以获得格式化字符串C# 为什么将rtf字符串应用于阿拉伯语文本时会给出“?”而不是格式?,c#,string,formatting,rtf,C#,String,Formatting,Rtf,我试图通过提取标题样式的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();
}
可在此处找到:
整数值大于127 7f十六进制的字符将转换为\uxxx?其中xxxx是字符的unicode。请由Joel阅读。然后将代码添加到帖子中。\ansi\ansicpg1252提示您可能无法将Unicode放入其中。但我对RTF不太了解。Alexie我会按照你说的做,但现在告诉我Joey所指的ansi编码应该是什么unicode。SoRun Wordpad.exe,粘贴文本,保存文件。您将获得所需的RTF。