【问题标题】:Unicode characters are not recognized in javajava中无法识别Unicode字符
【发布时间】:2015-08-18 16:18:26
【问题描述】:

我创建了一个 java 代码来存储上传的文本文档。然后我返回该文件中的文本。所有的文字都是“僧伽罗”语言。 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。我已经用僧伽罗字符测试了 jsp,它们正在工作。 我添加了 UTF-8 作为内容类型。

我也试过this one、this one和this one。

【问题讨论】:

  • 我会尝试为输出设置 UTF-8,即 PrintStream。
  • Unicode 字符在 Java 中肯定 被 识别,但如果您选择这样做,您的 Java 程序可能会错误地读取、操作或输出它们。此外,您用于检查结果的任何机制都可能对程序的输出造成错误的影响。你的代码片段看起来有点可疑,但你没有给我们一个完整的例子,所以我们不能说太多。
  • @PeterLawrey、PrintStreams 和其他 OutputStreams 没有具有与之关联的编码。事实上,这是我觉得最可疑的地方。 OutputStreams 用于写入二进制数据;对于字符数据,应该使用Writer。
  • 您需要向我们展示 JSP,并展示如何将输出直接发送给它。还要确保您网页中使用的字体能够显示那些“僧伽罗”字符。
  • @JohnBollinger 我在想 PrintWriter 所以你的评论帮助我想出了一个答案,

标签: java unicode utf-8


【解决方案1】:

JSP 必须提供指定的编码为 UTF-8 以及 all InputStream/Writer 和 OutputStream/Writers 具有明确提供的 UTF-8 字符集。

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

【讨论】:

    【解决方案2】:

    要为 Writer 设置编码,您可以这样做

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

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

    【讨论】:

    • 和 JSP/HTML 标头也需要指定 UTF-8 才能成为完整的解决方案。 &lt;%@ page contentType="text/html; charset=UTF-8" %&gt;
    【解决方案3】:

    您需要确保 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多