现在的位置: 首页 > 综合 > 正文

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

2018年04月28日 ⁄ 综合 ⁄ 共 1154字 ⁄ 字号 评论关闭

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" %>
<HTML>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
......
</body>
</HTML>

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”。

抱歉!评论已关闭.