StringBuffer sb = new StringBuffer();
pour (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
si (c >= 0 && c <= 255) {
sb.append(c);
} autre {
octet[] b;
essayer {
b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
exceptionUtil.error("Erreur lors de la conversion des caractères chinois du nom de fichier en chaîne codée en UTF8, la chaîne d'entrée est : " + s);
b = nouvel octet[0] ;
}
pour (int j = 0; j < b.length; j++) {
int k = b[j];
si (k < 0)
k + = 256 ;
sb.append("%" + Integer.toHexString(k).toUpperCase());
}
}
}
return sb.toString();
}
/**
* Convertissez les caractères chinois du nom de fichier en une chaîne codée UTF8 selon différents navigateurs, afin que le nom du fichier enregistré puisse être affiché correctement lors du téléchargement.
*
* @params
*Nom du fichier d'origine
* @renvoie le nom du fichier réencodé
*/
chaîne statique publique toUtf8String (requête HttpServletRequest, chaîne s) {
Agent de chaîne = request.getHeader("User-Agent");
essayer {
boolean isFireFox = (agent != null && agent.toLowerCase().indexOf("firefox") != -1);
si (estFireFox) {
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
} autre {
s = StringUtil.toUtf8String(s);
if ((agent != null && agent.indexOf("MSIE") != -1)) {
// voir http://support.microsoft.com/default.aspx?kbid=816868
si (s.length() > 150) {
// Récupère l'encodage possible en fonction des paramètres régionaux de la requête
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
}
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
retourner s ;
}