html 的表单 length 长度是以字符个数计算的,不管是汉字还是字母,但是数据库又是按字节计算的,汉字占 2 个字母占 1 个,这样容易造成写入的时候长度超出的问题。

// 假设页面编码是 utf8
function lengthInUtf8Bytes(str) {
  var m = encodeURIComponent(str).match(/%[89ABab]/g);
  return str.length + (m ? m.length : 0) / 2;
}