关于使用java从http接口取数据保存到本地文件的中文乱码处理
2013-01-04 18:13
941 查看
关于使用java从http接口取数据保存到本地文件的中文乱码处理
要做到如下几点:
1. 取接口数据,要注意加入编码设置与接口文件本身的编码设置一致,才能取得正确的数据
注意如下的: ins =new InputStreamReader(connection.getInputStream(),"GBK");
必须加入第二个编码格式参数:参数的值与接口返回的数据的编码格式一致
/**
* 从某个接口取返回数据内容
* @param url
* @return
*/
public static String fileGetContents(String strUrl) throws IOException {
URL url1 = null;
BufferedReader reader = null;
HttpURLConnection connection = null;
InputStreamReader ins = null ;
try {
url1 = new URL(strUrl);
connection = (HttpURLConnection) url1.openConnection();
connection.setConnectTimeout(2*1000);
connection.setReadTimeout(2*1000);
connection.connect();
ins =new InputStreamReader(connection.getInputStream(),"GBK");
reader = new BufferedReader(ins);
StringBuffer sb = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line+ "\n");
}
return sb.toString();
} catch (IOException e) {
System.out.println("Error getURL:" + e);
System.out.println("Error getURL:" + strUrl);
}finally
{
if(ins != null)
{
try {
ins.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(reader != null)
{
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection != null)
{
connection.disconnect();
}
}
return null;
}
2. 写文件处理:
要注意写入文件本身实际需要的编码格式:
注意:OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"GB2312"); 这句
public static void writeFile(String fileName, String fileContent)
{
try
{
File f = new File(fileName);
if (!f.exists())
{
f.createNewFile();
}
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"GB2312");
BufferedWriter writer=new BufferedWriter(write);
writer.write(fileContent);
writer.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
3. 接口方编码设置:
如接口为http://www.test.com/getdata.jsp
假设如下:
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312">
总的来说就是各个地方都采用一致的编码就可以避免讨厌头疼的中文编码乱码问题的发生。
要做到如下几点:
1. 取接口数据,要注意加入编码设置与接口文件本身的编码设置一致,才能取得正确的数据
注意如下的: ins =new InputStreamReader(connection.getInputStream(),"GBK");
必须加入第二个编码格式参数:参数的值与接口返回的数据的编码格式一致
/**
* 从某个接口取返回数据内容
* @param url
* @return
*/
public static String fileGetContents(String strUrl) throws IOException {
URL url1 = null;
BufferedReader reader = null;
HttpURLConnection connection = null;
InputStreamReader ins = null ;
try {
url1 = new URL(strUrl);
connection = (HttpURLConnection) url1.openConnection();
connection.setConnectTimeout(2*1000);
connection.setReadTimeout(2*1000);
connection.connect();
ins =new InputStreamReader(connection.getInputStream(),"GBK");
reader = new BufferedReader(ins);
StringBuffer sb = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line+ "\n");
}
return sb.toString();
} catch (IOException e) {
System.out.println("Error getURL:" + e);
System.out.println("Error getURL:" + strUrl);
}finally
{
if(ins != null)
{
try {
ins.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(reader != null)
{
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection != null)
{
connection.disconnect();
}
}
return null;
}
2. 写文件处理:
要注意写入文件本身实际需要的编码格式:
注意:OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"GB2312"); 这句
public static void writeFile(String fileName, String fileContent)
{
try
{
File f = new File(fileName);
if (!f.exists())
{
f.createNewFile();
}
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"GB2312");
BufferedWriter writer=new BufferedWriter(write);
writer.write(fileContent);
writer.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
3. 接口方编码设置:
如接口为http://www.test.com/getdata.jsp
假设如下:
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312">
总的来说就是各个地方都采用一致的编码就可以避免讨厌头疼的中文编码乱码问题的发生。
相关文章推荐
- 关于使用java从http接口取数据保存到本地文件的中文乱码处理
- Java模块 -- Http发送post数据文件,服务端Servlet接收,保存至本地
- selenium-Java-使用csv文件进行数据驱动-中文乱码
- 关于使用java自带ZipOutputStream压缩文件名为中文的乱码问题
- 关于Android使用HttpURLConnection传输含有中文JSON数据的报错、乱码问题
- 关于http接口开发中json格式数据编码问题处理
- Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
- Java 使用urlconnection下载文件或图片并保存到本地
- Java 关于中文乱码处理的经验总结
- 关于java处理txt中文乱码的心得
- java如何发送邮件以及使用Velocity模板解决模板文件中文乱码的问题
- spring boot 使用fastjson 处理json数据中文乱码 默认使用 ISO-8859-1编码格式
- 关于实现接收base64图片数据并以图片保存到本地的处理
- Java 读写本地文件中文乱码
- Java文件下载处理中文名(使用URLEncoder编码及空格变+解决)
- javaWed项目中用过滤器实现转码功能,敏感词汇过滤更能,处理Get和Post接收数据中的中文乱码问题以及敏感词汇的处理
- 关于使用 ASIHTTPRequest URL中文参数乱码问题
- 关于httpclient上传文件是中文名称的处理
- Java使用SQL Server数据库时注册或添加中文数据时乱码问题