相关疑难解决方法(0)

如何将unicode字符串输出到RTF(使用C#)

我正在尝试将unicode字符串输出为RTF格式.(使用c#和winforms)

来自维基百科:

如果需要Unicode转义,则使用控制字\ u,然后使用16位带符号十进制整数,给出Unicode代码点编号.为了没有Unicode支持的程序的好处,必须在指定的代码页中跟随此字符的最近表示.例如,\ u1576?会给出阿拉伯字母beh,指明没有Unicode支持的旧程序应该将其作为问号呈现.

我不知道如何将Unicode字符转换为Unicode代码点("\ u1576").转换为UTF 8,UTF 16和类似很容易,但我不知道如何转换为codepoint.

我使用它的场景:

  • 我把现有的RTF文件读成字符串(我正在阅读模板)
  • string.replace #TOKEN #with MyUnicodeString(模板填充数据)
  • 将结果写入另一个RTF文件.

当Unicode字符到达时出现问题

c# unicode rtf codepoint

20
推荐指数
2
解决办法
2万
查看次数

如何在C#中将字符串转换为RTF?

如何将字符串"Européen"转换为RTF格式的字符串"Europ \'e9en"?

[TestMethod]
public void Convert_A_Word_To_Rtf()
{
    // Arrange
    string word = "Européen";
    string expected = "Europ\'e9en";
    string actual = string.Empty;

    // Act
    // actual = ... // How?

    // Assert
    Assert.AreEqual(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我发现了什么

RichTextBox的

RichTextBox可用于某些事情.例:

RichTextBox richTextBox = new RichTextBox();
richTextBox.Text = "Européen";
string rtfFormattedString = richTextBox.Rtf;
Run Code Online (Sandbox Code Playgroud)

但是rtfFormattedString原来是整个RTF格式的文档,而不仅仅是字符串"Europ \'e9en".

堆栈溢出

谷歌

我还在网上找到了一堆其他资源,但没有解决我的问题.

回答

布拉德克里斯蒂的答案

不得不添加Trim()删除前面的空格result.除此之外,Brad Christie的解决方案似乎也有效.

我现在将使用这个解决方案,即使我有一个糟糕的直觉,因为我们必须使用SubString并修剪RichTextBox以获得RTF格式的字符串.

测试用例:

[TestMethod]
public void Test_To_Verify_Brad_Christies_Stackoverflow_Answer()
{
        Assert.AreEqual(@"Europ\'e9en", "Européen".ConvertToRtf());
        Assert.AreEqual(@"d\'e9finitif", "définitif".ConvertToRtf());
        Assert.AreEqual(@"\'e0", …
Run Code Online (Sandbox Code Playgroud)

c# rtf

13
推荐指数
3
解决办法
3万
查看次数

标签 统计

c# ×2

rtf ×2

codepoint ×1

unicode ×1