NodeJS中textarea提交与文件读取内容换行符不一致求助
换行符差异导致哈希不匹配的解决方案
为什么两种获取方式换行符不同?
- 浏览器textarea提交的内容:多数浏览器(尤其是Windows环境下)会将textarea中的换行处理为
\r\n(CRLF格式),遵循早期Windows系统的换行标准。 - 文件读取的内容:代码存入文件时,若在类Unix系统(Linux/macOS)下保存,文件默认使用
\n(LF格式);fs.readFileSync以utf8读取时会保留文件实际的换行符,因此读取结果为\n。
统一换行符的解决方案
你可以根据需求将两种来源的字符串统一为同一种换行格式:
方案1:统一转为LF(与文件读取结果一致)
对从req.body获取的合约代码做替换处理:
// 替换所有\r\n为\n,同时兼容单独的\r const normalizedContractCode = contractCode.replace(/\r\n?/g, '\n');
方案2:统一转为CRLF(与textarea提交结果一致)
对文件读取的内容做替换处理:
const fileContent = fs.readFileSync('GetSet.sol', 'utf8'); const normalizedFileContent = fileContent.replace(/\n/g, '\r\n');
建议:跨平台场景下优先选择统一为LF格式,因为类Unix系统、多数现代开发工具及JSON序列化逻辑都默认支持LF,兼容性更好。
内容的提问来源于stack exchange,提问作者Linh Nguyen
相关产品推荐
相关产品推荐

