Unicode RichTextBox用于检索C++;

Unicode RichTextBox用于检索C++;,unicode,richtextbox,Unicode,Richtextbox,我正在使用隐藏的RichTextBox从RichEditCtrl检索文本属性。 rtb->Text;返回国家语言的英语的文本部分–非常好 但是我需要\u12232中的文本\u32232?而不是民族文字和符号。使用我的db和RichEditCtrl。你知道如何从“到”\u12415?\u12395?\u23554?\u20219?\u30456?\u35527?\u21729?(其中每个国家的字符都表示为“\u23232”)吗 如果你有,那就太好了。 我使用Visual Studio 2008 C

我正在使用隐藏的RichTextBox从RichEditCtrl检索文本属性。 rtb->Text;返回国家语言的英语的文本部分–非常好

但是我需要\u12232中的文本\u32232?而不是民族文字和符号。使用我的db和RichEditCtrl。你知道如何从“到”\u12415?\u12395?\u23554?\u20219?\u30456?\u35527?\u21729?(其中每个国家的字符都表示为“\u23232”)吗

如果你有,那就太好了。 我使用Visual Studio 2008 C++的MFC和托管代码的组合。
干杯,祝你周末愉快

如果你还需要一个
系统::字符串
作为输出,那么像这样的东西就可以了:

String^ s = rtb->Text;
StringBuilder^ sb = gcnew StringBuilder(s->Length);
for (int i = 0; i < s->Length; ++i) {
    sb->AppendFormat("\u{0:D5}?", (int)s[i]);
}
String^ result = s->ToString();
String^s=rtb->Text;
StringBuilder ^sb=gcnew StringBuilder(s->Length);
对于(int i=0;iLength;++i){
sb->AppendFormat(“\u{0:D5}?”,(int)s[i]);
}
字符串^result=s->ToString();

顺便问一下,您确定格式如所述吗?
\u
是十六进制Unicode码点的传统转义序列,正好有4个十六进制数字长,例如
\u0F3A
。它后面通常不跟
。如果您确实需要,请使用格式说明符
{0:X4}
应该可以做到这一点。

您不需要使用转义将格式化的Unicode放入RichText控件中。您可以使用UTF-8。请参阅我的答案:


我不确定您对数据库的限制是什么,但也许您也可以在那里使用UTF-8。

谢谢Pavel。今晚我将尝试您的建议。至于格式,那些\u12395?\u23554?等是您正确指出的UNICODE十六进制。我从调试输出中剪切并粘贴了一个示例-因此“?”真正遵循U的5或3位数字取决于语言。你是谁?如果他们是十六进制,不应该有5位数字,因为<代码> \U/COD>只允许四(并且需要精确的四)在C++和C.*中。你的“调试输出”是什么?帕维尔你写的是关于像汉语的亚洲语言的5个数字(\U20219?\U3046\U35527?)或者俄语(\u1086?\u1084?\u1099?)在我上面的例子中。从希腊语中,似乎只有3个数字,如下所示:“\u957?\u946?\u959?”我所有的例子都是片段,而不是完整的句子。我正在用国内语言进行第一个项目,并且非常有趣;-)经过漫长的一天和几杯啤酒后,我刚从大学回来。明天我会重新尝试一下。PrivetWow,很棒的回答文章!如果我答对了,你的PSTR Utf8;将看起来像“\u12395?\u23554?\u20219?”当PWSTR WideString=“Сааааааааааааааааа107.我说的对吗?按照UTF-8的工作方式,每个大于128的WCHAR值都将表示为2到4个字符值……例如,L“П”将表示为“\xd0\xb4”。你可以在UTF-8的Wikipedia文章中阅读更多关于它如何工作的信息。再次感谢你,伙计,你帮了很多忙。干杯,今晚在universcity与朋友聚会后,我需要休息一下。明天我将尝试修复我的代码;-)