日期字符串具有不可见的字符。我们如何摆脱它们?

时间:2018-01-10 21:57:47

标签: javascript c# sql sql-server

我有一个使用javascript日历的网络应用程序。当用户点击日期时,它会填充日期标签(例如1/10/2018)。当我点击我的运行按钮时,包含此日期的输入信息将转到SQL Server中的SProc。出于某种原因,我有额外的角色你无法看到。例如:

 Exec Get_Date '2','6/1/2018', 1, 100, 101, 500, 50

立即抛出错误。如果我重新输入这样的日期:

'6/1/2018'

它工作正常。显然,两个日期之间没有任何不同。我做了一些调查,使用SQL来查看使用此脚本的字符值:

DECLARE @nstring NVARCHAR(100)
SET @nstring ='‎6‎/‎1‎/‎2018'

DECLARE @position INT
 SET @position = 1

DECLARE @CharList TABLE (
 Position INT,
 UnicodeChar NVARCHAR(1),
 UnicodeValue INT
 )

WHILE @position <= DATALENGTH(@nstring)
 BEGIN
 INSERT @CharList
 SELECT @position as Position
 ,CONVERT(nchar(1),SUBSTRING(@nstring, @position, 1)) as UnicodeChar
 ,UNICODE(SUBSTRING(@nstring, @position, 1)) as UnicodeValue
 SET @position = @position + 1
 END

SELECT * FROM @CharList

运行此脚本后,我会得到附加的输出。如你所见,我有?被添加(例如?6 /?1 /?2018)并且我有一堆尾随空格甚至没有Unicode等价物(我尝试了rtrim函数并且没有做任何事情)。如果我这样做:

Select Len('6/1/2018') or Select(rtrim('6/1/2018))

我希望8的值应该回来,或者至少是11的值,它可以解释数字前面的问号;但是,我得到一个值13.我尝试在将它传递给查询字符串之前在C sharp中转换字符串,但它也立即失败。如何在javascript或c sharp中清除这个看似正确的字符串类型日期(字符串strDate)? SQL Output

0 个答案:

没有答案