Was tun, wenn Java verstümmelt ist? Java verwendet den IE-Browser zum Herunterladen von Dateien, der Dateiname ist verstümmelt.
Empfohlenes Tutorial: „Java-Lernen“
Bei Verwendung von Servlet zur Implementierung der Datei-Download-Funktion erscheint der Dateiname beim Herunterladen mit IE verstümmelt;
Eine häufige Vorgehensweise Die Online-Lösung besteht darin, „user-agen“ zu verwenden. „Um den Browser zu beurteilen:
if (req.getHeader("user-agent").toLowerCase().contains("msie")) { // IE filename = URLEncoder.encode(filename, "UTF-8"); } else { // 非IE filename = new String(filename.getBytes("UTF-8"), "iso-8859-1"); }
Aber in Windows 10 wurde die Benutzeragentenzeichenfolge geändert und ist nicht mehr „msie“
Kompatibel ( „kompatibel“) und Browser-Token („MSIE“) wurden gelöscht.
Token „like Gecko“ wurde hinzugefügt (um mit anderen Browsern konsistent zu sein).
Browserversionen werden jetzt durch das neue Versions-Token („rv“) gemeldet.
win 10 ie user-agent Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko ie 11 win 10 edge user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393 edge
Sie können msie also nicht verwenden, um festzustellen, ob es sich um einen IE-Browser handelt.
String userAgent = req.getHeader("user-agent").toLowerCase(); if (userAgent.contains("msie") || userAgent.contains("like gecko") ) { // win10 ie edge 浏览器 和其他系统的ie fileName = URLEncoder.encode(fileName, "UTF-8"); } else { // fe fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1"); }
Projektbeispielcode:
try { String fileName = attachmentFile.originalName(); String userAgent = request.getHeader("user-agent").toLowerCase(); if (userAgent.contains("msie") || userAgent.contains("like gecko") ) { // win10 ie edge 浏览器 和其他系统的ie fileName = URLEncoder.encode(fileName, "UTF-8"); } else { // fe fileName = new String(fileName.getBytes("utf-8"), "iso-8859-1"); } response.setCharacterEncoding("utf-8"); response.setContentType("multipart/form-data"); response.setHeader("Content-Disposition", "attachment;fileName=" + fileName); String path = attachmentFile.path(); InputStream inputStream = new FileInputStream(new File(path)); OutputStream os = response.getOutputStream(); byte[] b = new byte[2048]; int length; while ((length = inputStream.read(b)) > 0) { os.write(b, 0, length); } // 这里主要关闭。 os.close(); inputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
Das obige ist der detaillierte Inhalt vonWas tun, wenn Java IE verstümmelte Zeichen hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!