%E2%80%8E Zero-Width Space

本文介绍了在处理JS生成当前时间提交到后台时遇到的Zero-Width Space问题,该字符无法肉眼察觉,导致字符串长度异常。提出了两种解决办法:替换%E2%80%8E或者调整JS代码生成日期格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天要处理一个js生成当前时间提交到后台保存。

js code

var myDate = new Date();
callInDateTime=myDate.toLocaleString( );        //获取日期与时间</span>

 后台C# code 

DateTime dt = Convert.ToDateTime(Request["callInDateTime"]);

谷歌、IE11以下都是可以的,唯独IE10报出异常:未识别有效的datetime

传过来的时间“‎2016‎年‎4‎月‎12‎日‎ ‎13‎:‎42:59”,怎么看都没有问题。

后来查看字符串长度为31,明明没有这么长,url编码后发现多了“%E2%80%8E”,

原来这个东西叫Zero-Width Space,肉眼根本发现不了。


解决方法:

1,替换%E2%80%8E,再进行转换处理

2,js这样写:   
       callInDateTime=myDate.getFullYear()+'年'+(myDate.getMonth()+1)+'月'+myDate.getDate()+"日 "+ myDate.getHours()+':'+myDate.getMinutes()+':'+myDate.getSeconds();


参考:

解决URL出现%E2%80%8E(Zero-Width Space)

### 插入语句与约束条件分析 在创建 `Teacher` 表时,定义了以下字段及其约束条件[^1]: - `TNO`:字符类型,长度为6,不可为空。 - `NAME`:字符类型,长度为8,不可为空。 - `SEX`:字符类型,长度为2,可为空。 - `SAL`:整数类型,可为空。 - `SDEPT`:字符类型,长度为12,必须满足检查约束 `check (SDEPT IN('IS', 'MA', 'CS'))`。 为了确保插入的记录符合表的约束条件,必须满足以下要求: 1. `TNO` 和 `NAME` 字段不能为空。 2. `SDEPT` 字段的值必须是 `'IS'`、`'MA'` 或 `'CS'`。 3. 其他字段可以为空,但如果提供值,则需符合其数据类型的定义。 以下是符合上述约束条件的正确插入语句示例: ```sql INSERT INTO Teacher (TNO, NAME, SEX, SAL, SDEPT) VALUES ('T00001', '张三', '男', 5000, 'IS'); ``` 此语句中,`TNO` 和 `NAME` 字段提供了非空值,`SDEPT` 的值为 `'IS'`,符合检查约束。如果需要插入其他符合条件的记录,可以调整字段值,但必须遵循相同的规则。 #### 不符合约束条件的示例 以下是一些不符合约束条件的插入语句示例及其原因: 1. **`TNO` 字段为空**: ```sql INSERT INTO Teacher (TNO, NAME, SEX, SAL, SDEPT) VALUES (NULL, '李四', '女', 6000, 'CS'); ``` - 错误:`TNO` 字段不能为空。 2. **`SDEPT` 字段值不在允许范围内**: ```sql INSERT INTO Teacher (TNO, NAME, SEX, SAL, SDEPT) VALUES ('T00002', '王五', '男', 7000, 'PH'); ``` - 错误:`SDEPT` 的值必须为 `'IS'`、`'MA'` 或 `'CS'`。 3. **`NAME` 字段为空**: ```sql INSERT INTO Teacher (TNO, NAME, SEX, SAL, SDEPT) VALUES ('T00003', NULL, '女', 8000, 'MA'); ``` - 错误:`NAME` 字段不能为空。 ### 总结 只有当插入语句中的所有字段值均符合表定义中的约束条件时,才能成功执行插入操作。任何违反约束条件的尝试都会导致 SQL 错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值