StringBuffer sb = new StringBuffer();
لـ (int i = 0; i < s.length(); i++) {
شار ج = s.charAt(i);
إذا (ج >= 0 && ج <= 255) {
sb.append(c);
} آخر {
بايت[] ب;
يحاول {
b = Character.toString(c).getBytes("utf-8");
} قبض (استثناء على سبيل المثال) {
ExceptionUtil.error("حدث خطأ عند تحويل الأحرف الصينية في اسم الملف إلى سلسلة مشفرة بـ UTF8، وسلسلة الإدخال هي:" + s);
ب = بايت جديد[0];
}
لـ (int j = 0; j < b.length; j++) {
int k = b[j];
إذا (ك < 0)
ك += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());
}
}
}
إرجاع sb.toString();
}
/**
* تحويل الأحرف الصينية في اسم الملف إلى سلسلة بتشفير UTF8 وفقًا للمتصفحات المختلفة، بحيث يمكن عرض اسم الملف المحفوظ بشكل صحيح عند التنزيل.
*
* @param s
* اسم الملف الأصلي
* @return اسم الملف المعاد ترميزه
*/
سلسلة ثابتة عامة toUtf8String(HttpServletRequest request, String s) {
وكيل السلسلة = request.getHeader("User-Agent");
يحاول {
boolean isFireFox = (agent != null && agent.toLowerCase().indexOf("firefox") != -1);
إذا (إيس فايرفوكس) {
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
} آخر {
s = StringUtil.toUtf8String(s);
إذا ((agent != null && agent.indexOf("MSIE")!= -1)) {
// راجع http://support.microsoft.com/default.aspx?kbid=816868
إذا (طول () > 150) {
// احصل على الترميز المحتمل بناءً على لغة الطلب
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
}
}
}
} قبض على (UnsupportedEncodingException e) {
printStackTrace();
}
العودة ق.
}