winforms 在C# Microsoft.Office.Interop.Word库中无法获取将/ symbol从word转换为xml的确切符号

70gysomp  于 2023-04-07  发布在  C#
关注(0)|答案(1)|浏览(172)

我有一个程序,可以将Microsoft Word文件转换为XML文件。但是,当Word文件由从插入-〉符号窗口插入的符号组成时,字体类型“Symbol”程序无法正确转换它。因此,而不是获得适当的符号,我得到了“(“符号为他们每个人。即使当我尝试粘贴这些符号在这里,它出现这样的方式:我们使用Winwordcontrol.document.application.selection.range来选择行。这个类有Text,First或etc方法。它以字符串的形式返回我选择的行。当程序试图将选定的行转换为xml时,它返回“(”而不是插入的Word符号。其余的行都被正确转换。
enter image description here
我试图获取这些符号的Unicode,但它返回给我的是“(”符号的Unicode。

hc2pp10m

hc2pp10m1#

Symbol字体中的/字符假装具有十进制代码点164(0xA 4),但Word以不同的方式保存它,即:

<w:sym w:font="Symbol" w:char="F0A4"/>

另请参见MS Word: Getting the actual ASCII code of an inserted symbol。它也被复制为private use area中的Unicode字符(以F0和all开头)。
简单的解决方案,因为我不知道从XML中获取这些字符的正确方法:
1.不要使用Symbol或其他字体来表示符号;Unicode可以包含所有这些。
1.在代码中,使用自定义Map函数将F0字符Map回其Unicode等效项,然后在从Word接收的字符串中替换它们。

2的实现:

var input = "Test Math ";

var output = input.Replace("\uF0C1", "\u2287");

Console.WriteLine(output);

输出:
测试数学

相关问题