StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
} anders {
byte[] b;
versuchen {
b = Character.toString(c).getBytes("utf-8");
} Catch (Ausnahme ex) {
AusnahmeUtil.error("Fehler beim Konvertieren chinesischer Zeichen im Dateinamen in eine UTF8-codierte Zeichenfolge. Die Eingabezeichenfolge lautet: " + s);
b = neues Byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
wenn (k < 0)
k += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());
}
}
}
return sb.toString();
}
/**
* Konvertieren Sie die chinesischen Zeichen im Dateinamen je nach Browser in eine UTF8-codierte Zeichenfolge, damit der gespeicherte Dateiname beim Herunterladen korrekt angezeigt werden kann.
*
* @param s
*Originaldateiname
* @return den neu codierten Dateinamen
*/
öffentlicher statischer String toUtf8String(HttpServletRequest request, String s) {
String agent = request.getHeader("User-Agent");
versuchen {
boolean isFireFox = (agent != null && agent.toLowerCase().indexOf("firefox") != -1);
if (isFireFox) {
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
} anders {
s = StringUtil.toUtf8String(s);
if ((agent != null && agent.indexOf("MSIE") != -1)) {
// siehe http://support.microsoft.com/default.aspx?kbid=816868
if (s.length() > 150) {
// Holen Sie sich die mögliche Codierung basierend auf dem Gebietsschema der Anfrage
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
}
}
}
} Catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return s;
}