down.jsp
上传用户:lm2018
上传日期:2015-12-12
资源大小:30449k
文件大小:2k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@ page import="java.io.*"%>
  3. <%!/**
  4.  * 将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名.
  5.  * @param s 原文件名
  6.  * @return 重新编码后的文件名
  7.  */
  8. public static String toUtf8String(String s) {
  9. StringBuffer sb = new StringBuffer();
  10. for (int i = 0; i < s.length(); i++) {
  11. char c = s.charAt(i);
  12. if (c >= 0 && c <= 255) {
  13. sb.append(c);
  14. } else {
  15. byte[] b;
  16. try {
  17. b = Character.toString(c).getBytes("utf-8");
  18. } catch (Exception ex) {
  19. System.out.println(ex);
  20. b = new byte[0];
  21. }
  22. for (int j = 0; j < b.length; j++) {
  23. int k = b[j];
  24. if (k < 0)
  25. k += 256;
  26. sb.append("%" + Integer.toHexString(k).toUpperCase());
  27. }
  28. }
  29. }
  30. return sb.toString();
  31. }
  32. /**
  33.  * Utf8URL解码
  34.  * @param text
  35.  * @return
  36.  */
  37. public String Utf8URLdecode(String text) {
  38. String result = "";
  39. int p = 0;
  40. if (text != null && text.length() > 0) {
  41. text = text.toLowerCase();
  42. p = text.indexOf("%e");
  43. if (p == -1) {
  44. return text;
  45. }
  46. while (p != -1) {
  47. result += text.substring(0, p);
  48. text = text.substring(p, text.length());
  49. if (text == "" || text.length() < 9) {
  50. return result;
  51. }
  52. result += CodeToWord(text.substring(0, 9));//调用CodeToWord方法
  53. text = text.substring(9, text.length());
  54. p = text.indexOf("%e");
  55. }
  56. }
  57. return result + text;
  58. }
  59. /**
  60.  * utf8URL编码转字符
  61.  * @param text
  62.  * @return
  63.  */
  64. private String CodeToWord(String text) {
  65. String result;
  66. if (Utf8codeCheck(text)) {//调用Utf8codeCheck方法
  67. byte[] code = new byte[3];
  68. code[0] = (byte) (Integer.parseInt(text.substring(1, 3), 16) - 256);
  69. code[1] = (byte) (Integer.parseInt(text.substring(4, 6), 16) - 256);
  70. code[2] = (byte) (Integer.parseInt(text.substring(7, 9), 16) - 256);
  71. try {
  72. result = new String(code, "UTF-8");
  73. } catch (Exception ex) {
  74. result = null;
  75. }
  76. } else {
  77. result = text;
  78. }
  79. return result;
  80. }
  81. /**
  82.  * 编码是否有效
  83.  * @param text
  84.  * @return
  85.  */
  86. private boolean Utf8codeCheck(String text) {
  87. String sign = "";
  88. if (text.startsWith("%e")) {
  89. for (int i = 0, p = 0; p != -1; i++) {
  90. p = text.indexOf("%", p);
  91. if (p != -1) {
  92. p++;
  93. }
  94. sign += p;
  95. }
  96. }
  97. return sign.equals("147-1");
  98. }
  99. %>
  100. <%
  101. %>