急: 一个奇怪的中文乱码问题(使用smartupload时单数个中文字最后一个中文字乱码)

potency 2005-04-24 07:17:53
环境如下:Win2003CN+j2sdk1.4.1+Resin2.1.8
从一个UTF-8编码的页面通过表单上传文件,表单中还有一些其他文字字段。上传组件采用JSPSmartUpload组件。
在javebean中调用smartupload组件取得文字字段内容时,出现乱码。以new String(str.getBytes(),"UTF-8")解码后,出现如下问题:
当文字为双数个汉字时,如“你好”,“中国”这样的,解码正常。
当文字为单数个汉字时,如“新加坡”,“爱尔兰”,出现最后一个汉字为乱码,被解码为“新加??”,“爱尔??”
哪位知道该如何解决这个问题?

急:
急:
急:
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiulu 2005-04-24
  • 打赏
  • 举报
回复
给你段代码,需转义一下:
/**
* 将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名.
* 纵横软件制作中心雨亦奇2003.08.01
* @param s 原文件名
* @return 重新编码后的文件名
*/
public static String toUtf8String(String s) {
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);
} else {
byte[] b;
try {
b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0) k += 256;
sb.append("%" + Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
}
potency 2005-04-24
  • 打赏
  • 举报
回复

急:
急:
急:

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧