空格的不同编码

在进行字段值修改时,因申报报文与数据库中空格编码不一致(0x20 vs 0xc20xa0),导致值一致性验证失败。文章分析了此问题的成因,涉及前端展示时编码自动转换的细节,强调了在系统间数据交互时需注意编码统一性。

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

最近在工作中遇到一个问题,需求是在改某个字段的值的时候,需要验证一下报文中的字段值的原值和库中的值是否一致,如果一致,才允许修改,否则退回,并提示,申报的原值和库中的值不一致。

   问题:发现申报的原值和库中的值一致,但是退回了,而实际上不应该退回。

  定位问题:怀疑存在特殊编码的问题,最后发现,申报报文中的空格的编码和库中的空格的编码不一致导致退回。所以验证值是否一直的程序没有问题。

申报报文中的空格的编码为(0x20),而库中的空格编码为(0xc2 0xa0);它们的16进制编码是不一致的。

那么为什么不一致呢??原数据是通过接口的方式传递给另一个系统,另一个系统只是在界面展示,然后修改后,和修改后的值一起再传回来。看似没有毛病,实际上存在问题。空格编码为(0xc2 0xa0)的字符串在界面显示时:1.如果时用label标签或者非表单标签显示,那么空格编码为(0xc2 0xa0)的字符串会自动转化为(0x20);2:如果使用Input标签(表单标签时)空格编码为(0xc2 0xa0)的字符串的编码保持不变。

 

 

 

 

### JavaScript 中空格编码方式与处理方法 在 JavaScript 编程中,空格是一种常见字符,在某些场景下可能需要对其进行特殊处理。以下是关于 JavaScript 空格编码方式以及常用的处理方法。 #### 一、空格编码表示 JavaScript 支持多种方式来表示空格字符: - **普通空格**:可以直接通过键盘输入的空格字符。 - **转义序列**:可以使用 `\u0020` 或者 ` ` 来表示 Unicode 和 HTML 实体中的空格[^1]。 ```javascript console.log("\u0020"); // 输出一个空格 console.log(" ".charCodeAt(0)); // 转换为 ASCII 值显示为空格对应的数值 ``` #### 二、空格的处理方法 对于字符串中的空格,可以通过以下几种方式进行处理: ##### 1. 替换空格 利用 `String.prototype.replace()` 方法配合正则表达式实现对空格的替换操作。`\s` 是用于匹配空白字符(包括空格、制表符等)的元字符,而 `g` 表示全局替换模式[^3]。 ```javascript function replaceSpaces(inputStr, replacement) { return inputStr.replace(/\s/g, replacement); } const result = replaceSpaces("Hello World", "%20"); console.log(result); // 输出 "Hello%20World" ``` ##### 2. 删除多余空格 如果希望移除字符串两端或多处多余的空格,则可采用内置的方法如 `.trim()`, `.trimStart()`, 和 `.trimEnd()` 进行清理[^2]。 ```javascript let strWithExtraSpaces = " Hello "; strWithExtraSpaces = strWithExtraSpaces.trim(); console.log(strWithExtraSpaces); // 输出 "Hello" // 移除开头或结尾特定位置上的额外空间也可以单独执行如下命令: strWithExtraSpaces = " Hello ".trimStart().trimEnd(); console.log(strWithExtraSpaces); // 同样输出 "Hello" ``` ##### 3. 控制语句中的空格规范 为了提高代码可读性和一致性,在编写条件判断或其他控制结构时应遵循一定的空格书写标准。例如,在关键字后面加单个空格而在函数定义时不建议加入间隔。 ```javascript if (condition) { doSomething(); } function exampleFunction(param) { console.log(param); } ``` 以上展示了如何合理运用各种技术手段有效管理 JavaScript 应用程序内的空白区域及其呈现形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值