java中无法识别Unicode字符

时间:2015-08-18 16:18:27

标签: java unicode utf-8

我创建了一个用于存储上传文本文档的java代码。然后我返回该文件中的文本。所有的文字都在" sinhala"语言。 UTF-8编码文本

        streamReader = new InputStreamReader(new FileInputStream(new File(filePath)), "utf8" /*Here I have tried 'UTF-8', 'utf-8'*/);
        br = new BufferedReader(streamReader);
        PrintStream printStream= new PrintStream(f);
        while ((line = br.readLine()) != null) {
            .....
        }

输出直接发送到jsp页面,它显示为' ?????????????????????? ??????'

Windows 8.1,tomcat和java版本7.我已经使用sinhala字符测试了jsp,它们正在工作。 我添加了UTF-8作为内容类型。

我也尝试了this onethis onethis one

3 个答案:

答案 0 :(得分:1)

JSP必须提供指定的编码为UTF-8以及所有 InputStream/WriterOutputStream/Writers具有UTF-8字符设置明确提供。

<%@ page contentType="text/html; charset=UTF-8" %>

答案 1 :(得分:0)

要设置Writer的编码,您可以

PrintWriter out = new PrintWriter(new InputStreamWriter(f, "UTF-8"));

您可以使用PrintWriter或PrintStream,因为它具有相同的方法。

答案 2 :(得分:0)

您需要确保HTTP响应的正确编码。

如果在JSP中插入文本,请在.jsp文件的顶部设置JSP编码(另请参阅UTF-8 encoding in JSP page):

<%@ page contentType="text/html; charset=UTF-8" %>
...
<c:out value="${myDocumentTextInUnicode}"/>

如果在servlet中生成响应,请在那里设置编码:

response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
while ((line = br.readLine()) != null) {
    out.println(line);
}