String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”)
1、utf8解决JSP中文乱码问题
一般说来在每个页面的开始处,加入:
<%@ page language="java" contentType="text/htmlcharset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page language="java" contentType="text/htmlcharset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8")
%>
◆charset=UTF-8的作用是指定JSP向客户端输出的编码方式为“UTF-8”;
◆pageEncoding="UTF-8",为了让JSP引擎能正确地解码含有中文字符的JSP页面,这在LINUX中很有效;
◆request.setCharacterEncoding("UTF-8")是对请求进行了中文编码。
有时,这样仍不能解决问题,还需要这样处理一下:
String msg = request.getParameter("message")
String str=new String(msg.getBytes("ISO-8859-1"),"UTF-8")
out.println(st)
读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题。可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null
try {
String file = "D:/test/test.txt"
bre = new BufferedReader(new FileReader(file))//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str)//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK")//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容")//将要写入文件的内容,可以多次write
pw.close()//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
java出现乱码的原因是
.java 文件中的编码格式和命令提示符的指令不一致导致的
比如.java 使用的是utf-8,windows环境下命令提示符编码是gbk,在使用javac 命令进行对.java文件进行编译的时候,.java文件中的中文字符就会出现 乱码.
出现这样的情况,处理方式是通过现在编译编码-encoding 处理
javac -encoding utf-8 Test.java