keycode(15)c#代表的char是什么?

时间:2015-06-08 12:28:50

标签: c# sql string keycode

我有一个字符串,它通过视图使用EF从SQL数据库中提取。 string sample是“mystring”,长度为8。 当我将这个字符串与“mystring”进行比较时,我得到了“假”。

我已将字符串转换为(byte)数组:

var result = dataContext.table.GroupBy(m => m.category)
             .SelectMany(g => g.OrderByDescending(x => x.Id).Take(10));

我看到我在阵列的末尾有一个额外的char,键码为“15”。

我在任何地方看到了什么是键码'15',我没有在键码表中看到它。

我的问题是:

  1. 转换为字节时,“15”表示的字符是什么?

  2. 为什么要添加到字符串中? (这是我的用户可以使用管理员屏幕更改的字符串)

  3. 补充说:它不会每次都发生,只有(现在)一个字符串。

    编辑:我将该字符串的一部分粘贴到立即窗口,检查长度,我得到长度= 2

    这是字符串:

    ("mystring").Select(m=>(byte)m).ToArray();
    

    此字符串的UF8中的GetBytes是:

    "a‏".Length 
    2
    

    第二个字符的int值(我眼中不存在)是:

    {byte[4]}
    [0]: 97
    [1]: 226
    [2]: 128
    [3]: 143
    

    更新:现在当我检查“a”字符串上的元素时,我会在看到“a& rlm” - >之前复制粘贴。它是什么以及我如何摆脱它?

3 个答案:

答案 0 :(得分:4)

.NET中的char a byte。您从stringbyte阵列的转换存在缺陷。

您需要使用GetBytes来获取您选择的编码中的字节。

答案 1 :(得分:3)

您的角色可能不是代码为Uri的ASCII字符,而是 Unicode 字符,其值为15。将unicode字符强制转换为XX0F时,由于unicode字符为两个字节,因此丢失了“高”字节。

我不知道这对你的byte比较有什么影响,但我怀疑你正在寻找以一个角色结尾的东西,并以另一个角色结束。我不是文化专家,所以也许文化敏感的搜索是合适的?

请注意,以"mystring"结尾的任何 unicode字符都会导致0F的值。这是第15个:

15

答案 2 :(得分:3)

在HTML源代码中查看问题中的字符串,将其写为a‏。一个快速的谷歌显示rlm是从左到右的标记,它是unicode U + 200F(http://en.wikipedia.org/wiki/Right-to-left_mark)。

将此与其他人的观察结果相结合,即铸造到字节只留下最后一个字节解释为什么你得到0F = 15作为你的字节数。

这来自哪里可供您调查,但我想它来自原始用户输入(即用户从右向左输入文本)。