【发布时间】:2015-06-08 12:28:50
【问题描述】:
我有一个字符串,它是通过视图从使用 EF 的 SQL 数据库中提取的。 字符串示例是“mystring”,长度为 8。 当我将此字符串与“mystring”进行比较时,我得到的是“false”。
我已将字符串转换为(字节)数组:
("mystring").Select(m=>(byte)m).ToArray();
我看到我在数组末尾有一个带有键码“15”的额外字符。
我在任何地方都看过什么是键码“15”,但在键码表中没有看到它。
我的问题是:
“15”表示的char转换为byte时是什么?
为什么要添加到字符串中? (这是我的用户可以通过管理屏幕更改的字符串)
补充:它不会每次都发生,只有(目前)一个字符串。
编辑:我将该字符串的一部分复制粘贴到即时窗口,以检查长度,我得到 Length = 2
这是字符串:
"a".Length
2
这个字符串在UF8中的GetBytes是:
{byte[4]}
[0]: 97
[1]: 226
[2]: 128
[3]: 143
第二个字符的int值(在我眼里是不存在的)是:
var intvalue = (int)test[1];
8207
更新:现在,当我检查那个“a”字符串上的元素时,我在看到“a&rlm”之前复制粘贴了 --> 它是什么以及如何摆脱它?
【问题讨论】:
-
看看:asciitable.com。它是
shift in(无论是什么意思)或negative acknowledge,具体取决于您的 15 是十进制还是十六进制。 -
是十进制的,我认为是“移入”但我不知道是什么意思(以及为什么存储在sql中,或者是谁在'路上'添加的)
-
什么样的SQL才能把数据取出来?以及如何首先保存价值?列是
varchar还是nvarchar?您是在 SQL 服务器上还是在 C# 应用程序中进行转换?除非您的用户正在使用电传打字机,否则这不太可能是有效的提交 - 这很可能是您的用户的恶意尝试,或者某些应用程序与用户的输入交互(Trimall user-input 通常是个好主意字符串,让它们摆脱不可见的字符)。 -
八进制 15 是回车符,这更有可能在字符串中找到这两者中的任何一个。更有可能是 U+010F
ďunicode 字符,当转换为byte时,这将导致15(0Fin hex) 的值(因为“上”字节在演员。