java中文字符串处理方法
{//处理中文字符串的函数
String s=str;
try
{
byte tempB[]=s.getBytes("ISO-8859-1");
s=new String(tempB);
return s;
}
catch(Exception e)
{
return s;
}
}
请问这个方法有必要吗?为什么?整个方法的代码含义麻烦大侠讲解一下,小生不甚明白,谢谢啊 展开
2015-12-15 · 做真实的自己 用良心做教育
处理方法有分割,合并,等很多方法的
1、String类是final的,不可被继承。public final class String。
2、String类是的本质是字符数组char[], 并且其值不可改变。private final char value[];
然后打开String类的API文档,可以发现:
3、String类对象有个特殊的创建的方式,就是直接指定比如String x = "abc","abc"就表示一个字符串对象。而x是"abc"对象的地址,也叫做"abc"对象的引用。
4、String对象可以通过“+”串联。串联后会生成新的字符串。也可以通过concat()来串联,这个后面会讲述。
6、Java运行时会维护一个String Pool(String池),JavaDoc翻译很模糊“字符串缓冲区”。String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区。下面是个系统内存示意图:
5、创建字符串的方式很多,归纳起来有三类:
其一,使用new关键字创建字符串,比如String s1 = new String("abc");
其二,直接指定。比如String s2 = "abc";
其三,使用串联生成新的字符串。比如String s3 = "ab" + "c";
jdk中只规定了必须有一些unicode utf8
等编码的实现,
好像对汉字编码没有什么实现的硬性规定,
所以有时候就会出现乱码问题,
但我个人感觉,
这个问题主要是出现在jsp页面中,
java应用程序中还是很少出现这类问题,
数据库连接中加上useunicode =true 以及用gbk 或gb2312编码就可以了
也不知什么原因,
我以前用的是mysql4.X以及tomcat4.X版本,
不用这个函数,
问题啥都没有,
中文显示没有问题,
现在都到5.X版本的mysql以及tomcat了,
问题出现了,
中文全部是?号,
不得已加上这个函数。
在中文操作系统中,
getBytes方法返回的是一个GBK
或者GB2312的中文编码的字节数组,
其中中文字符,各占两个字节。
一些程序在中文环境下运行时,
经常出现乱码,上面布满了"?",
就是因为编码没有进行正确处理的结果。
而提取的GBK编码的字节数组中正确得到了中文字符的GBK编码
另一种方法:加入你获取的参数是name,则获取name转换一下:
String name = “%E4%B8%96%E7%95%8C";
String name2 = URLDecoder.decode(name);