看起来同样的中文字符串,为什么长度不同?

时间:2022-10-15 07:34:33
本来要匹配两个中文字符串,结果总是不同,(看起来一样)开始以为是空格的问题,后来发现是长度不同,我估计一个是UNICODE编码,一个是GB2312,因为长度正好差了一半,很奇怪,很不解,那个感觉是unicode编码的也只是由window.showModalDialog传过来,然后SPLIT一下出来的一个数组中的一个,为什么会这样,怎么解决呢?怎么让他们统一,然后正常比较匹配呢?

14 个解决方案

#1


不同编码下的字符串getBytes会不同,因此new出来的String也会不同,除非统一编码方式

#2


都把它转变成一种编码格式试试看不行吗?比如都把它转成gb2312

#3


统一编码

#4


用文本打开这个文件,在另存为里面检查编码格式,使其编码格式一样

#5


还是不行,主要代码我粘在下面:
<script>
 function selectValue2(){
var answer=window.showModalDialog("transCorpCheck.htm",window.self,"dialogWidth:600px;dialogHeight:400px:center:yes");
 
 var Ownerarray =answer.split("?");

  if  (document.thisform.transCorp.value != Ownerarray[0] (//主要是这句比较的语句,两个长度显示不同,有点郁闷)&&   document.thisform.transCorp.value !="" ) {
    document.thisform.Vehicle.value=document.thisform.Vehicle.value+"|"+ Ownerarray[0];
    document.thisform.transCorp.value=document.thisform.transCorp.value +"|" +Ownerarray[1];
document.thisform.num.value=document.thisform.Vehicle.value.split('|').length  
    }else if (document.thisform.transCorp.value !="") {
 document.thisform.Vehicle.value=document.thisform.Vehicle.value+"|"+ Ownerarray[0];
 document.thisform.num.value= document.thisform.Vehicle.value.split('|').length  
}

}
</script>

#6


好象不是整个网页编码的问题,有可能是哪个赋值过程中出现什么变化,对Jsp不熟悉,请大家帮忙找找原因,多谢,正在郁闷中……

#7


字符编码不一样,长度就不一样
UTF-8一个字符占用的字节数和gbk一个字符占用的字节数是不同的

#8


同意楼上

#9


那怎么办呢,我重新存储过网页,问题依旧哦,是不是JSP里有什么专门把字符串转换编码的函数呢?

#10


这问题有点郁闷,我不知道从哪里下手,编码不一样,长度就不一样,这我想得通,可具体要怎么做呢?或许并不是网页的问题,因为我另存过,都保持一样的编码,页面里面的charset=gb2312也都设置过了,真郁闷……

#11


你再看看你的tomcat的语言设置 
在server.xml文件中  修改
  <Connector 
   port="80"    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" URIEncoding="gb2312" />

加上URIEncoding="gb2312" 试一下

#12


你页面里面写脚本所以不予解答!!

#13


UTF-8 占三个字节
GBK 占一个字节

#14


GBK 占两个字节
上面写错了

#1


不同编码下的字符串getBytes会不同,因此new出来的String也会不同,除非统一编码方式

#2


都把它转变成一种编码格式试试看不行吗?比如都把它转成gb2312

#3


统一编码

#4


用文本打开这个文件,在另存为里面检查编码格式,使其编码格式一样

#5


还是不行,主要代码我粘在下面:
<script>
 function selectValue2(){
var answer=window.showModalDialog("transCorpCheck.htm",window.self,"dialogWidth:600px;dialogHeight:400px:center:yes");
 
 var Ownerarray =answer.split("?");

  if  (document.thisform.transCorp.value != Ownerarray[0] (//主要是这句比较的语句,两个长度显示不同,有点郁闷)&&   document.thisform.transCorp.value !="" ) {
    document.thisform.Vehicle.value=document.thisform.Vehicle.value+"|"+ Ownerarray[0];
    document.thisform.transCorp.value=document.thisform.transCorp.value +"|" +Ownerarray[1];
document.thisform.num.value=document.thisform.Vehicle.value.split('|').length  
    }else if (document.thisform.transCorp.value !="") {
 document.thisform.Vehicle.value=document.thisform.Vehicle.value+"|"+ Ownerarray[0];
 document.thisform.num.value= document.thisform.Vehicle.value.split('|').length  
}

}
</script>

#6


好象不是整个网页编码的问题,有可能是哪个赋值过程中出现什么变化,对Jsp不熟悉,请大家帮忙找找原因,多谢,正在郁闷中……

#7


字符编码不一样,长度就不一样
UTF-8一个字符占用的字节数和gbk一个字符占用的字节数是不同的

#8


同意楼上

#9


那怎么办呢,我重新存储过网页,问题依旧哦,是不是JSP里有什么专门把字符串转换编码的函数呢?

#10


这问题有点郁闷,我不知道从哪里下手,编码不一样,长度就不一样,这我想得通,可具体要怎么做呢?或许并不是网页的问题,因为我另存过,都保持一样的编码,页面里面的charset=gb2312也都设置过了,真郁闷……

#11


你再看看你的tomcat的语言设置 
在server.xml文件中  修改
  <Connector 
   port="80"    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" URIEncoding="gb2312" />

加上URIEncoding="gb2312" 试一下

#12


你页面里面写脚本所以不予解答!!

#13


UTF-8 占三个字节
GBK 占一个字节

#14


GBK 占两个字节
上面写错了