彻底解决jsp中用SmartUpload上传附件中文乱码问题
最近开发一个基于J2EE平台的DRP项目,其中需要上传下载大量的附件。项目中所使用的数据库为Oracle8I,操作系统和Web应用服务程序为:①开发环境Win2000/Tomcat、②开发测试环境Win2000/WebSphere6.0,③正式环境Unix/WebSphere6.0,④三相异步电机点动控制实验报告>什么叫多线程处理工作正式环境的备用服务器Linux/WebSphere6.0。在开发上传附件中出现了一个很普通很麻烦的问题,就是中文名称乱码问题,根据网上查询的资料,很快解决了①②③环境下的乱码,但④环境下依然是乱码。最后,经过持续一个多月的研究实验,终于到一种同时满足①②③④种环境的解决办法。
基本原理是:(1)、在上传之前,先对要上传的文件名进行编码;
(2)、对编码后的文件名解码后,再插入数据库中。
基本实现如下面的代码片段,
上传代码:
......
<input type="file" name="upFile" size="40" maxlength="100">
<input type="button" name="btUpload" value="上传附件" onClick="doFileUpLoad();">
阿普尔龙珠基本原理是:(1)、在上传之前,先对要上传的文件名进行编码;
(2)、对编码后的文件名解码后,再插入数据库中。
基本实现如下面的代码片段,
上传代码:
......
<input type="file" name="upFile" size="40" maxlength="100">
<input type="button" name="btUpload" value="上传附件" onClick="doFileUpLoad();">
<input type="hidden" name="table_name1" value="">
......matlab中字符串转数字
<script>
function doFileUpLoad(){
.....
//使用javascript的函数escape编码后放到域table_name1中
form1.table_name1.value = escape(form1.upFile.value);
form1.submit();
......
}
</script>
JSP代码:
......
//获取上传的文件名,并用自编的unescape函数解码
......matlab中字符串转数字
<script>
function doFileUpLoad(){
.....
//使用javascript的函数escape编码后放到域table_name1中
form1.table_name1.value = escape(form1.upFile.value);
form1.submit();
......
}
</script>
JSP代码:
......
//获取上传的文件名,并用自编的unescape函数解码
table_name1 = CUtil.Request().getParameter("table_name1").toString());
//分离目录信息,在数据库中只存储文件名
table_name1 = actFileName(table_name1);
......
radio station用英语怎么说
unescpe函数代码:
public static String unescape(String src) {
StringBuffer tmp = new StringBuffer();
sureCapacity(src.length());
int lastPos = 0, pos = 0, nLen = src.length();
char ch;
while (lastPos < nLen) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
jsp中文全称
//分离目录信息,在数据库中只存储文件名
table_name1 = actFileName(table_name1);
......
radio station用英语怎么说
unescpe函数代码:
public static String unescape(String src) {
StringBuffer tmp = new StringBuffer();
sureCapacity(src.length());
int lastPos = 0, pos = 0, nLen = src.length();
char ch;
while (lastPos < nLen) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
jsp中文全称
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = nLen;
} else {
tmp.append(src.substring(lastPos, pos));
ch = (char) Integer.parseInt(src.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = nLen;
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
String();
}
下载处理代码:
......
String FileName = rs.getString("NEWFILE_NAME"); //附件存储在服务器上的文件名
String oFileName = rs.getString("OLDFILE_NAME"); //附件原来的文件名
//以下代码的作用是,在浏览器中下载附件时,提示的中文名称不为乱码
oFileName = new Bytes("gb2312"),"iso8859-1");
mySmartUpLoad.downloadFile(FileName,null,oFileName);
......
}
}
}
String();
}
下载处理代码:
......
String FileName = rs.getString("NEWFILE_NAME"); //附件存储在服务器上的文件名
String oFileName = rs.getString("OLDFILE_NAME"); //附件原来的文件名
//以下代码的作用是,在浏览器中下载附件时,提示的中文名称不为乱码
oFileName = new Bytes("gb2312"),"iso8859-1");
mySmartUpLoad.downloadFile(FileName,null,oFileName);
......
提示:本系统使用SmartUpload组件上传/下载附件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论