StringBuffer sb = StringBuffer ใหม่ ();
สำหรับ (int i = 0; i < s.length(); i++) {
ถ่าน c = s.charAt(i);
ถ้า (ค >= 0 && ค <= 255) {
sb.ผนวก(c);
} อื่น {
ไบต์[]ข;
พยายาม {
b = Character.toString(c).getBytes("utf-8");
} จับ (ข้อยกเว้นเช่น) {
ข้อยกเว้น Util.error ("ข้อผิดพลาดเมื่อแปลงอักขระภาษาจีนในชื่อไฟล์เป็นสตริงที่เข้ารหัส UTF8 สตริงอินพุตคือ: " + s);
b = ไบต์ใหม่ [0];
-
สำหรับ (int j = 0; j < b.length; j++) {
int k = b[j];
ถ้า (k < 0)
เค += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());
-
-
-
กลับ sb.toString();
-
-
* แปลงอักขระภาษาจีนในชื่อไฟล์เป็นสตริงที่เข้ารหัส UTF8 ตามเบราว์เซอร์ที่แตกต่างกัน เพื่อให้สามารถแสดงชื่อไฟล์ที่บันทึกไว้ได้อย่างถูกต้องเมื่อดาวน์โหลด
-
* @param ส
*ชื่อไฟล์ต้นฉบับ
* @return ชื่อไฟล์ที่เข้ารหัสใหม่
-
สตริงสาธารณะคงที่ toUtf8String (คำขอ HttpServletRequest, String s) {
ตัวแทนสตริง = request.getHeader ("ตัวแทนผู้ใช้");
พยายาม {
บูลีน isFireFox = (ตัวแทน != null && agent.toLowerCase().indexOf("firefox") != -1);
ถ้า (isFireFox) {
s = สตริงใหม่ (s.getBytes("UTF-8"), "ISO8859-1");
} อื่น {
s = StringUtil.toUtf8String (s);
ถ้า ((ตัวแทน != null && agent.indexOf("MSIE") != -1)) {
// ดู http://support.microsoft.com/default.aspx?kbid=816868
ถ้า (s.ความยาว() > 150) {
// รับการเข้ารหัสที่เป็นไปได้ตามสถานที่ของคำขอ
s = สตริงใหม่ (s.getBytes("UTF-8"), "ISO8859-1");
-
-
-
} จับ (UnsupportedEncodingException e) {
e.printStackTrace();
-
กลับ;
-