QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 635|回复: 1

这辆天折腾JSP和Mysql,郁闷

[复制链接]
发表于 2004-2-26 08:51:54 | 显示全部楼层 |阅读模式
网上找了一个xiaoxiang上传文件组建,明明支持中文文件名的,我也测试成功,可是把文件名提取出来放到mysql里面就是乱码,心里面那个郁闷啊!
[code:1]
String xxDescribe = request.getParameter( "description" );
String xxFName = myFiles.getFile(i).getName();
String xx = "INSERT INTO `doc` ( `Title` , `Describe` ) VALUES ('" + xxFName + "', '" + xxDescribe + "')";
[/code:1]

就是这个myFiles.getFile(i).getName(),直接system.out出来都是中文,保存到数据库就是乱码,没有天理啊!求大人帮助!
发表于 2004-2-26 09:39:51 | 显示全部楼层
编码转换错误。注意操作系统使用的编码和数据库使用的编码是否一致,再看看JDBC驱动是否会自动帮你进行编码转换。

一般情况下上传的文件名使用ISO-8859-1编码
String xxFName = myFiles.getFile(i).getName();如没有指定编码使用的是操作系统的编码
如操作系统的编码不是ISO-8859-1将出现乱码。你查看一下myFiles.getFile(i).getName()方法的代码和String的代码就很清楚了。

我使用的是Apache的commons-fileupload-1.0。你可以试一下。
[code:1]
        DiskFileUpload upload = new DiskFileUpload();
        upload.setSizeMax(Attach.getMaxSize());
        upload.setRepositoryPath(Attach.getTempPathPrefix());
        if (req.getCharacterEncoding() == null) {
            upload.setHeaderEncoding("ISO-8859-1");
        } else {
            upload.setHeaderEncoding(req.getCharacterEncoding());
        }

        FileItem item;
        try {
            List items = upload.parseRequest(req);
            Iterator iter = items.iterator();
            while (iter.hasNext()) {
                item = (FileItem) iter.next();
                if (item.isFormField()) {
                    if (item.getFieldName().equals("nextView")) {
                        nextView = item.getString("UTF-8");
                    } else {
                        verifiedValue.put(item.getFieldName(), item.getString("UTF-8"));
                    }
                } else {
                    if (item.getSize() < 1) {
                        continue; //不处理空文件
                    }
                    Attach attach = new Attach();

                    String fileName = SQLHelper.convertEncoding(item.getName()); //转换编码从ISO-8859-1到UTF-8
                    log.debug("上传文件 : " + fileName);
[/code:1]
我的Java源文件及数据库使用的都是UTF-8编码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-13 04:07 , Processed in 0.038008 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表