### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column \'name\' at row 1

本文探讨了一种常见情况,即在后台管理系统中遇到的字符列过长问题,尤其是在使用UTF-8编码时。通过分析前端编码过程,明确了问题根源,并给出了解决方案。

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

今天做基金会管理系统后台碰到字符列过长,我已经把它设置成30的长度了,怎么还过长那?我输入的汉字只有四个啊,按理说只占8个字符才对啊?
上网查资料说修改字符编码,我查了一下,每个字段包括数据库都是utf-8,问题出在哪儿了那?

function beforeRename(treeId, treeNode, newName) {
if (newName.length == 0) {
alert("节点名称不能为空.");
return false;
}
var param = "id=" + treeNode.id + "&name=" + newName;
$.post(encodeURI(encodeURI("/SpringMVC_Spring_mybatis/init.action?method=updateNodes&"
+ param)));
return true;
}


前台代码如上所示。大家发现有两次encodeURI的过程,这个东西干嘛了那?它会对汉字进行编码成%25E4,%25B8,%25AD,一个汉字占3个字节,编码这么长,当然超出范围了啊。修改数据库列的宽度就行了,改成50.
说明:1 .encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.
     2. UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值