解决properties获取中文乱码问题

1. InputStream

  • 使用 InputStream去接收aa.properties
  • 创建一个properties对象,properties类有字节流load读取方法
  • 因为load无法获取中文,所以getProperty得到的中文对象是乱码的
public class ZhuanFaServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/aa.properties");///WEB-INF/classes/com/zhou/servlet/aa.properties
        Properties prop = new Properties();
        prop.load(is);
        resp.setContentType("text/html;charset=utf-8");
        String user = prop.getProperty("username");
        String pwd = prop.getProperty("password");
        System.out.println(user);
        resp.getWriter().print(user+":"+pwd);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

2.解决方法

BufferedReader字符流

InputStreamReader类有设置编码的功能

采用reader把InputStream转换成reader用字符流来读取中文

public class ZhuanFaServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/aa.properties");///WEB-INF/classes/com/zhou/servlet/aa.properties
        Properties prop = new Properties();
        BufferedReader aa= new BufferedReader(new InputStreamReader(is,"utf-8"));
        prop.load(aa);
        resp.setContentType("text/html;charset=utf-8");
        String user = prop.getProperty("username");
        String pwd = prop.getProperty("password");
        System.out.println(user);
        resp.getWriter().print(user+":"+pwd);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

3.进行测试,ok

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值