unicode字符值

问题:按值扩展符号的正确顺序是什么?

如果我擅长对Unicode字符列表进行sorting,则顺序与如果使用excel“= code()”并按这些值sorting的顺序不同。 目的是要测量字符之间的距离,例如ab = 1和& – %= 1; 当使用excelsorting函数进行sorting时,三个sorting在三个字符之内的字符的值都是134。

另外,一些字符符号在excel中是空白的,有几个符号是用“查找”find两次的,是两个不同的符号,而且根本找不到一对。 请解释这些“特殊”字符的细节。

http://en.wikipedia.org/wiki/List_of_Unicode_characters

示例代码:

int charDist = abs(alpha[index] - code[0]); 

编辑:要找出c + + vs2008中的UNICODE值,我运行每个代码作为从代码1比较代码255代码1

 cout << mem << " code " << key << " is " << abs(key[0] - '') << " from " << endl; 

在括号中是一个黑色的快乐的脸,这个网站没有字体但命令窗口呢,在VS2008它看起来像一个半 – T. Excel右半部分留空。

下面的Unicodes不是在c ++ vs2008中用std库和#include 9,10,13,26,34,44,

而且,代码1到127的数字“距离”是正确的,但是在128处,距离跳过了一个额外的距离,并且由于某种原因离得更远。 然后从128到255,距离反转,变得更近。 255距离1“2”

如果这些东西更符合逻辑,而且只有1到255没有打嗝,跳跃和逆转,255-1 = 254,但是嘿,我知道些什么。

EDIT2:我发现它 – 没有绝对的 – UNIFORMAT的sorting规则是128到255,然后是1到127,并产生1到255与6跳过9,10,13,26,34,44是垃圾。 这不直观。 在新的顺序128-> 255,1-> 127中,从127到128的奇怪跳转更清晰,这是因为没有0,所以在255和1之间缺less值。

解决scheme:为每个符号创build我自己的散列表,不要依赖c ++ std库或vs2008来提供UNIFORMAT值,因为它们不适用于测量UNIFORMAT几个特定子集之外的char距离。

Unicode没有定义的sorting(或sorting规则)顺序。 当Excelsorting时,它使用基于当前所选语言的表格。 例如,某人在英语模式下使用Excel可能会得到不同的sorting结果,即某人使用葡萄牙语Excel。

还有正常化的问题。 使用Unicode时,一个“字符”不一定对应一个值。 一些字符可以用不同的方式表示。 例如,一个资本欧米茄可以编码为希腊字母或作为表示电阻单位的符号。 在某些语言中,单个字符可以由几个连续的值组成。

空白值可能对应于您没有任何字体覆盖的字形。 一些系统使用所谓的“Unicode字体”,这些字体对于每个脚本都需要大量的字形。 当当前字体没有必要的字形时,Windows倾向于dynamic地切换字体。 这两种方法都不需要每个字形。 此外,某些Unicode值不会编码为可见字形(例如,Unicode中有许多不同types的空格),某些值更像ASCII风格的控制代码(例如,段落分隔符或bidi控件),以及某些值只有在与其他angular色结合时才有意义,就像许多“合并”口音一样。

所以没有一个你会满意的答案。 也许如果你提供了关于你最终想做什么的更多信息,我们可以提出一个不同的方法。

我不认为你可以做你想在Excel中做什么,而不是显着限制你的方法。

通过实验,Code函数永远不会返回高于255的值。如果使用任何不能通过此VBA代码生成的unicode文本,它将被解释为问号(?)或63。

 For x = 1 To 255 Cells(x, 1).Value = Chr(x) Next 

您应该能够使用代码来确定差异。 但是如果这个angular色不属于这个领域,那么你需要走出Excel范围,因为即使VBA也会将任何其他的Unicode字符转换成问号(?)或者63。