public static String toUtf8String(String src)
{
byte[] b = src.getBytes();
char[] c = new char[b.length];
for(int i=0;i<b.length;i++)
{
c[i] = (char)(b[i]&0x00FF);
}
return new String(c);
}
在centos上导出文件一直乱码。
原来就没出现这问题,适了好多种方法。
最后把导出的编码设成gbk竟然好了。现在还不知其原因,如有高手还请赐教。
java代码编码utf-8,
jsp编码utf-8,
centos中i18n:utf-8,
tomcat:uriencoding utf-8.
public static String toUtf8String(String src)
{
byte[] b = src.getBytes();
char[] c = new char[b.length];
for(int i=0;i<b.length;i++)
{
c[i] = (char)(b[i]&0x00FF);
}
return new String(c);
}
对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下
测试文件编码是否为UTF-8
File file = new File(path);
InputStream ios = new java.io.FileInputStream(file);
te[] b = new byte;
ios.read(b);
ios.close();
if (b[0] == -17 && b[1] == -69 && b == -65)
System.out.println(file.getName() + “:编码为UTF-8″);
else
System.out.println(file.getName() + “:可能是GBK,也可能是其他编码。”);
public static void downloadFile(HttpServletRequest request,
HttpServletResponse response, String fileName)
{
if (StringUtils.isEmpty(fileName))
{
return;
}
//导出文件路径
String filePath = PlatformConfig.getUseDataPath() + Constants.EXPORT_PATH + fileName;
// 处理中文名称,需要编码
response.setContentType("application/octet-stream; CHARSET=GBK");
InputStream inputStream = null;
OutputStream outputStream = null;
try
{
response.setHeader("Content-Disposition", "attachment; filename="
+ EncodingUtil.getString(fileName.getBytes("gbk"),
"ISO8859-1"));
inputStream = new FileInputStream(filePath);
outputStream = response.getOutputStream();
transferFile(inputStream, outputStream);
}
catch (FileNotFoundException e)
{
logger.error(e.toString());
}
catch (IOException e)
{
logger.error(e.toString());
}
finally
{
try
{
if (inputStream != null)
{
inputStream.close();
}
}
catch (Exception e)
{
logger.error(e.toString());
}
try
{
if (outputStream != null)
{
outputStream.close();
}
}
catch (Exception e)
{
logger.error(e.toString());
}
//删除临时导出文件
FileTools.delFile(filePath);
}
}
转utf-8
猜你喜欢
转载自love398146779.iteye.com/blog/1446312
今日推荐
周排行