JSP页面UTF-8格式中文字符串乱码问题解决方法

JSP页面使用utf8格式保存中文字符串到文件或进行socket传送接收数据时,常常会出现乱码。这里给出了一个解决方法,实践检验行之有效。


0) 页面属性设置
<%@ page import="java.util.*,java.text.*,java.io.*,java.net.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"%> 
<%@ page pageEncoding="UTF-8" %>





......




1)保存至文件
指定UTF-8编码格式。
String str = "中文字符串";
FileOutputStream fileout = new FileOutputStream("/home/songchao/message.txt"); 
OutputStreamWriter osw=new OutputStreamWriter(fileout, "UTF-8");
osw.write(str);
osw.close();


2)通过socket传送
//获取Socket的输出流,用来发送数据到服务端,使用UTF-8编码格式。
String sentmsg = "中文字符串";
Socket socket = new Socket("127.0.0.1", 1024); 
socket.setSoTimeout(10000);


PrintWriter writer = new PrintWriter(new OutputStreamWriter(
socket.getOutputStream(), "UTF-8"), true);
writer.println(sentmsg);


3)通过socket接收
//获取Socket的输入流,用来接收从服务端发送过来的数据,使用UTF-8编码 
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
String recvmsg= reader.readLine(); 


4)  解析
Tomcat默认的编码格式是iso-8859-1,不能表示中文字符。这里我们使用UTF-8字符集表示中文。
“page ”指示该页面中代码的字符编码是UTF-8。“head”指示浏览器使用UTF-8格式进行字符显示。
Tomcat进行文件和网络传输操作时,默认使用的编码格式也是iso-8859-1,这里我们指定传输时的编码格式为“UTF-8”。


你可能感兴趣的:(JSP页面UTF-8格式中文字符串乱码问题解决方法)