不想努力的程序员 2023-09-21 19:23 采纳率: 52.5%
浏览 4
已结题

poi读取word部分乱码

使用poi读取word文档并保存到数据库,在开发模式下没有任何问题,部署到linux服务器也没有问题,但是部署到windows系统上时,会有部分乱码现象。如下图

img

代码如下


   public ResultUtils<String> importWord(@RequestParam(value = "file", required = true) MultipartFile file) throws IOException, ParseException {
        String textFileName=file.getOriginalFilename();
//        Resource resource = new ClassPathResource(textFileName);
//        InputStream inputStream = resource.getInputStream();
       String fileName = file.getOriginalFilename();

       InputStream inputStream = file.getInputStream();

        String suff = fileName.substring(fileName.lastIndexOf(".") + 1);
        String content = "";
        if ("docx".equals(suff)) {
            XWPFDocument xdoc = new XWPFDocument(inputStream);
            XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc);
            content = extractor.getText();
            System.out.println(content);
            employeeService.insertNewEmployee(content);

            extractor.close();
        } else if ("doc".equals(suff)) {
            WordExtractor ex = new WordExtractor(inputStream);
            content = ex.getText();

            int insertResult = employeeService.insertNewEmployee(content);
            if(insertResult==7){
                return ResultUtils.fail("添加家属信息失败,请联系管理员");
            }
            if (insertResult==6){
                return ResultUtils.fail("添加简历失败,请联系管理员");
            }
            if (insertResult==5){
                return ResultUtils.fail("该员工已加入,请勿重复添加!");
            }
            if (insertResult==0){
                return ResultUtils.fail("添加员工失败,请联系管理员");
            }
            ex.close();
        } else {
            System.out.println("此文件不是word文件");
        }
        return ResultUtils.success("添加成功!");
    }

insertNewEmployee的方法是存入数据库的,这个怎么解决,有知道的吗

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-21 23:06
    关注

    【以下回答由 GPT 生成】

    我可以尝试帮助你解决这个乱码问题。乱码问题通常是由于不同的字符编码引起的。在这种情况下,你可以尝试以下解决方案:

    1. 确保你的数据库表的字符集编码是正确的,并且与你读取的文本内容的字符集编码一致。你可以通过执行以下SQL查询语句来检查和修改数据库表的字符集编码:
    SHOW CREATE TABLE your_table_name;
    ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8;  -- 替换 utf8 为正确的字符集编码
    
    1. 确保你通过String对象保存文本内容时,使用了正确的字符集编码。你可以在保存文本内容之前,将其转换为正确的字符集编码,例如UTF-8:
    byte[] bytes = content.getBytes("ISO-8859-1");  // 将文本内容从 ISO-8859-1 转换为字节数组
    content = new String(bytes, "UTF-8");  // 将字节数组转换为 UTF-8 编码的字符串
    
    1. 确保你读取文件时使用了正确的字符集编码。你可以尝试在读取文件之前,指定字符集编码为UTF-8:
    InputStream inputStream = file.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
    
    // 接下来使用 reader 来读取文本内容
    
    1. 如果以上方法仍然不能解决乱码问题,你可能需要检查你读取的Word文档本身的字符集编码。你可以尝试打开Word文档,然后使用"另存为"功能,将其另存为UTF-8编码的文档,并使用新生成的UTF-8文档进行读取。

    如果以上方法都不能解决问题,可能还需要进一步调查你的环境和具体的错误日志,以便确定准确的解决方法。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月2日
  • 创建了问题 9月21日

悬赏问题

  • ¥15 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?