我正在尝试将UWP RichEditBox
的内容转换为HTML。
为此,我尝试使用RtfPipe
库(https://github.com/erdomke/RtfPipe)。从它的外观来看,这个库在UWP上存在问题,因为并非所有编码都在该目标框架上定义。 (如果你感兴趣的话,这是你得到的错误:Encoding.GetEncoding can't work in UWP app,但是接受的答案似乎不是所有平台上的最佳选择 - 我甚至没有设法使建议的修复编译,所以它可能不再有效了)
现在,作为一种避免这种情况发生的方法,我想知道是否有办法强制控件在用户键入文本时始终使用UWP定义的UTF变体之一来编码数据。 因为,现在,当我输入它时,我会得到类似的东西:
{\rtf1\fbidis\ansi\ansicpg1253\deff0\nouicompat\deflang1032{
....
\pard\tx720\cf1\f0\fs23\lang1033
...使图书馆抛出异常。
我想,如果我设法让它不使用ASCII代码页,事情会很棒。 在看了控制属性之后,我看不到我可以使用的东西。有没有办法实现这个目标?
答案 0 :(得分:1)
如果您感兴趣,这是您得到的错误:Encoding.GetEncoding无法在UWP应用中使用
正如您所描述的,将此包与UWP应用程序一起使用时会引发内部错误。 System.ArgumentException: 'Windows-1252' is not a supported encoding name
,通过我的身边测试,public static readonly Encoding AnsiEncoding = Encoding.GetEncoding("Windows-1252");
时代码行UpdateEncoding
抛出Windows-1252
。
根据错误详情,UWP似乎不支持public static readonly Encoding AnsiEncoding = Encoding.UTF8;
,另请参阅RtfSpec.cs
。您可以根据需要使用UTF,例如,对库进行更改,然后它将起作用(测试演示this similar thread)。
UWP
我甚至没有设法建议修复编译,所以它可能不再有效
here方法应该有用,但它只支持.NET Framework 4.6
或Portable Class Library
,它不支持RtfPipe
。您提到的Portable Class Library
库是Encoding.RegisterProvider
,因此您无法使用Portable Class Library
。 Encoding.RegisterProvider
方法支持catch
,详细信息请查看两个类别的版本信息。
我想,如果我设法让它不使用ASCII代码页
Encoding.GetEncoding
本身使用ANSI,PC-8,Macintosh或IBM PC字符集来控制文档的表示和格式,您可能无法更改它。考虑更新库以解析UWP的RTF。