在近的一次测试中遇到一个javascript:;" onClick="javascript:tagshow(event, 'bug');" target="_self">bug,在本地开发环境中检测昵称长度时判断1~24个字符为规定长度(一个汉字等于两个字符),
  所以在本地中我输入十二个汉字是符合规定的,且保存成功。

  (本地情况)
  但是同样代码部署在测试环境中,输入同样的昵称长度,却判定为保存失败,根据chrome控制台错误码显示错误原因为“字符长度超出限制”
  那么问题来了,同样的代码为什么部署在两个环境产生不同的昵称长度断判?
  在开发环境中的昵称判断代码如下:


  
  先将输入的string类型的昵称做正则表达式的判断,在通过getBytes获取string的字节数(汉字为两个字节,其他常用字符为一个字节)进行判断,超过24即为超出
  长度。通过本地的debug发现输入十二个汉字的时候是符合字节数(bytes.length)的规定判断
  那么测试环境中出现问题的可能是编码方式很本地开发环境不同。

  通过调用System.getProperties()查出本地开发环境的默认编码方式GBK(GBK全称《汉字内码扩展规范》)
  而测试服务器上查询服务器的默认编码方式为en_US.UTF-8

  再通过自己写的java判断两种编码方式字节数的区别(本地的BGK和测试环境的UTF-8)

  控制台输出为
  36
  24
  可以得出一个汉字用GBK编码为2个字节,用UTF编码为3个字节(计算机基础。。。不够扎实。。。。)
  由此可以知道bug的来源即是默认编码方式的区别。而如何解决这个bug也顺利成章的将getBytes方式设定为“GBK”即可

  bug解决,希望大家看到这篇文章不用掉进同一个坑。。