【问题标题】:Setting Japanese characters in WPF RichTextBox在 WPF RichTextBox 中设置日文字符
【发布时间】:2017-11-15 13:35:29
【问题描述】:

我有一个 WPF RichTextBox 可以完美地加载 RTF 内容(英文字符)。尝试在编辑器中设置日文字符(例如 ユーザに)时会出现问题。执行此操作时,结果如下:

这似乎与编码有关...... 所以我调整了我的代码以使用 Unicode 而不是 UTF8。无论如何,它不起作用。我将文本加载到 RTF 编辑器的代码如下所示:

private void Window_Loaded(object sender, RoutedEventArgs e) {

            string text = "ユーザに";
            TextRange textRange = new TextRange(MyRichTextBox.Document.ContentStart, MyRichTextBox.Document.ContentEnd);
            textRange.Load(new MemoryStream(Encoding.Unicode.GetBytes(text)), DataFormats.Rtf);
        }

最后,XAML 布局没有什么特别之处:

<Window x:Class="Tester.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Loaded="Window_Loaded"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <RichTextBox x:Name="MyRichTextBox" Margin="3"></RichTextBox>
    </Grid>
</Window>

以防万一……我已经在这台电脑上安装了日语,它看起来不错。此外,如果我在编辑器加载后将 (ctrl+v) 日文字符粘贴到编辑器上,它似乎可以工作。

提前致谢!

【问题讨论】:

  • Encoding.Unicode.GetBytes(text) 默认为 UTF-8 是什么?
  • @johnny5 你是什么意思?

标签: c# wpf unicode richtextbox


【解决方案1】:

您不能将原始文本用作DataFormats.Rtf。但是,您可以直接设置TextRange.Text 属性,也可以使用TextRange.Load(new MemoryStream(Encoding.UTF8.GetBytes("ユーザに")), DataFormats.Text)

包含文本的 rtf 文档实际上如下所示:

{\rtf
{\ltrch \u12518?\u12540?\u12470?\u12395?}
}

代码:

    var text = 
@"
{\rtf
{\ltrch \u12518?\u12540?\u12470?\u12395?}
}
";

    var range = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
    //range.Text = text;
    range.Load(new MemoryStream(Encoding.Default.GetBytes(text)), DataFormats.Rtf);

可以用这一行生成unicode:

string.Concat("ユーザに".Select(x => @"\u" + (int)x + "?"))

【讨论】:

  • 感谢您的回答!您的解决方案似乎有效,但是当我尝试设置 DataFormats.UnicodeText 时,我收到“附加信息:不支持 'UnicodeText' 数据格式”。例外。不支持吗?
  • 对不起,我的意思是 DataFormats.TextEncoding.UTF8.GetBytes
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 2019-04-15
相关资源
最近更新 更多