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);
} 또 다른 {
바이트[] b;
노력하다 {
b = Character.toString(c).getBytes("utf-8");
} catch (예외예외) {
예외Util.error("파일 이름의 한자를 UTF8로 인코딩된 문자열로 변환하는 중 오류가 발생했습니다. 입력 문자열은 다음과 같습니다: " + s);
b = 새 바이트[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
만약 (k < 0)
k += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());
}
}
}
sb.toString()을 반환합니다.
}
/**
* 다운로드 시 저장된 파일명이 올바르게 표시될 수 있도록 파일명에 포함된 한자를 브라우저에 따라 UTF8로 인코딩된 문자열로 변환하시기 바랍니다.
*
* @param s
*원본 파일명
* @return 재인코딩된 파일명
*/
공개 정적 문자열 toUtf8String(HttpServletRequest 요청, 문자열 s) {
문자열 에이전트 = request.getHeader("User-Agent");
노력하다 {
boolean isFireFox = (에이전트 != null && Agent.toLowerCase().indexOf("firefox") != -1);
if (isFireFox) {
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
} 또 다른 {
s = StringUtil.toUtf8String(s);
if ((agent != null && Agent.indexOf("MSIE") != -1)) {
// http://support.microsoft.com/default.aspx?kbid=816868 참조
if (s.length() > 150) {
// 요청의 로케일을 기반으로 가능한 인코딩을 가져옵니다.
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
}
}
}
} 잡기(UnsupportedEncodingException e) {
e.printStackTrace();
}
반환 s;
}