C++ 如何计算指定了双向表示的unicode字符串?
伙计们。我有一个相当变态的问题。请原谅我:) 有一个官方算法描述了双向unicode文本应该如何呈现。 我收到一个字符串(来自某些第三方来源),其中包含拉丁/希伯来语字符,以及数字、空格、标点符号等 问题是我收到的字符串在表示形式中已经。也就是说,我收到的字符序列应该从左到右呈现 现在,我的目标是找到表示形式完全相同的unicode字符串。表示-我需要将该字符串传递给另一个实体;然后它将根据官方算法呈现这个字符串,结果应该是相同的 假设:C++ 如何计算指定了双向表示的unicode字符串?,c++,unicode,C++,Unicode,伙计们。我有一个相当变态的问题。请原谅我:) 有一个官方算法描述了双向unicode文本应该如何呈现。 我收到一个字符串(来自某些第三方来源),其中包含拉丁/希伯来语字符,以及数字、空格、标点符号等 问题是我收到的字符串在表示形式中已经。也就是说,我收到的字符序列应该从左到右呈现 现在,我的目标是找到表示形式完全相同的unicode字符串。表示-我需要将该字符串传递给另一个实体;然后它将根据官方算法呈现这个字符串,结果应该是相同的 假设: (渲染实体的)默认文本方向是RTL 我不想注入显式覆
- (渲染实体的)默认文本方向是RTL
- 我不想注入显式覆盖文本方向的“特殊unicode字符”(如RLO、RLE等)
- 我怀疑可能存在几种解决方案。如果是这样,我希望尽可能保留字符串的RTL外观。字符串通常主要由希伯来语单词组成。我想保留这些单词的正确顺序,以及单词中的字符。而其他字符序列可能(也应该)被转置
提前感谢。如果您想检查字符是否是双向的,您必须使用Unicode.org提供的UCD(Unicode字符数据库),其中包含大量有关字符的信息。在其中一个DB属性中,可以找到字符的双向性 因此,您必须下载USD,然后编写一个类在XML中查找您的角色并返回答案 我是在一个开源C#应用程序中完成的,你可以在这里找到它
请让我知道您的问题是否已解决。如果您想检查字符是否为双向字符,您必须使用Unicode.org提供的UCD(Unicode字符数据库),其中包含大量有关字符的信息。在其中一个DB属性中,可以找到字符的双向性 因此,您必须下载USD,然后编写一个类在XML中查找您的角色并返回答案 我是在一个开源C#应用程序中完成的,你可以在这里找到它
请告诉我您的问题是否通过此解决。纳赛尔,谢谢您的回答。 不幸的是,它不能完全解决我的问题 到目前为止,我能知道每个角色的方向性。我仍然不知道如何计算整个字符串,使其表示形式与我需要的匹配 假设您希望将以下文本从左到右书写,而希伯来语/阿拉伯语字符由大字符表示: ABC工程123 456 DEF 正确的字符串如下所示: 联邦储备银行456 123英国中央银行 或者: 美联储英语456 123 CBA 或者,如果使用明确的方向覆盖代码,可以这样编写: 美联储英语123 456 CBA 目前,我通过向字符串中注入显式方向性覆盖代码来解决这个问题。因此,我隔离了希伯来语/阿拉伯语单词的序列,对于所有连接的LTR/弱/中性字符,我显式地覆盖了LTR的方向
不过,我希望在不注入显式覆盖代码的情况下执行此操作。Nasser,谢谢您的回答。 不幸的是,它不能完全解决我的问题 到目前为止,我能知道每个角色的方向性。我仍然不知道如何计算整个字符串,使其表示形式与我需要的匹配 假设您希望将以下文本从左到右书写,而希伯来语/阿拉伯语字符由大字符表示: ABC工程123 456 DEF 正确的字符串如下所示: 联邦储备银行456 123英国中央银行 或者: 美联储英语456 123 CBA 或者,如果使用明确的方向覆盖代码,可以这样编写: 美联储英语123 456 CBA 目前,我通过向字符串中注入显式方向性覆盖代码来解决这个问题。因此,我隔离了希伯来语/阿拉伯语单词的序列,对于所有连接的LTR/弱/中性字符,我显式地覆盖了LTR的方向 但是,我希望在不注入显式重写代码的情况下执行此操作