使用JSTL fmt库和属性文件时,Tamil字符显示为问号

use*_*241 6 jsp jstl character-encoding tamil properties-file

我正在使用JSTL fmttaglib来显示泰米尔语字符.但我无法显示任何泰米尔人的角色.它没有显示泰米尔语字符,而是显示问号字符??????.我试过印地语,它也显示了问号.我现在应该怎么做?

这是我的代码.我只是尝试在泰米尔语中打印Hello World.

fileproperty.properties:

helloworld=??????? ?????
Run Code Online (Sandbox Code Playgroud)

Hello.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org  /TR/html4/loose.dtd">
<html>
  <fmt:setLocale value="ta-IN"/>
  <fmt:setBundle basename="fileproperty"/>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Home</title>
  </head>
  <body>
    <fmt:message key="helloworld"/>
  </body>
</html> 
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 5

属性文件不支持 UTF-8。阅读javadoc

...输入/输出流采用 ISO 8859-1 字符编码 ...

(因为您似乎在使用 Eclipse,我想知道您是否真的仔细阅读.properties了第一次保存此类文件时会显示的警告消息)

基本上,您需要该native2ascii工具将 UTF-8 保存的属性文件转换为正确的 ISO-8859-1 属性文件格式。重命名您的 UTF-8 属性文件以包含utf8文件名中的某处并按如下方式转换:

native2ascii –encoding UTF-8 fileproperty.utf8.properties fileproperty.properties
Run Code Online (Sandbox Code Playgroud)

因此,ISO-8859-1 字符集未涵盖的任何字符都将被替换为 unicode 代码点序列,如\u1234.

但是,Eclipse 已经内置了对它的支持。你应该好好利用它。您应该在“属性文件编辑器”而不是“文本编辑器”中打开属性文件(可以通过以蓝色突出显示而不是以黑色突出显示的属性值来识别)。如果默认情况下它没有这样做,请右键单击属性文件并选择Open With > Properties File Editor。如果您粘贴??????? ?????,那么 Eclipse 将(应该)自动将其转换为\u0BB5\u0BA3\u0B95\u0BCD\u0B95\u0BAE\u0BCD \u0B89\u0BB2\u0B95\u0BAE\u0BCD\u008D.

再次保存它,清理/重建/重新部署/重新启动,然后再试一次。现在应该可以正常工作了。

也可以看看:


具体问题无关,您@page充满了已经是默认值的值。只需以下就足够了。

<%@page pageEncoding="UTF-8"%>
Run Code Online (Sandbox Code Playgroud)