Java 胡言乱语

Java 胡言乱语,java,web,internationalization,resourcebundle,Java,Web,Internationalization,Resourcebundle,我想将i18n添加到我的web项目中 但我觉得它在我之前是胡言乱语的 <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <c:set var="language" value="${not empty param.language ? param.language : not empty language ? language : page

我想将i18n添加到我的web项目中

但我觉得它在我之前是胡言乱语的

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

<c:set var="language"
       value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}"
       scope="session"/>
<fmt:setLocale value="${language}"/>
<fmt:setBundle basename="com.java.task11.i18n.text"/>

<html lang="${language}">
<head>
    <title>Profile Info</title>
    <jsp:include page="parts/header.jsp"/>
</head>

<body>
<div class="container-fluid users-table">
    <%--navbar--%>
    <div class="row">
        <div class="col-md-10 col-xs-12 col-md-offset-1 table-nav">
            <jsp:include page="parts/navbar.jsp"/>
        </div>
    </div>

之后

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

<c:set var="language"
       value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}"
       scope="session"/>
<fmt:setLocale value="${language}"/>
<fmt:setBundle basename="com.java.task11.i18n.text"/>

<html lang="${language}">
<head>
    <title>Profile Info</title>
    <jsp:include page="parts/header.jsp"/>
</head>

<body>
<div class="container-fluid users-table">
    <%--navbar--%>
    <div class="row">
        <div class="col-md-10 col-xs-12 col-md-offset-1 table-nav">
            <jsp:include page="parts/navbar.jsp"/>
        </div>
    </div>

以下是页面代码的页面片段:

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

<c:set var="language"
       value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}"
       scope="session"/>
<fmt:setLocale value="${language}"/>
<fmt:setBundle basename="com.java.task11.i18n.text"/>

<html lang="${language}">
<head>
    <title>Profile Info</title>
    <jsp:include page="parts/header.jsp"/>
</head>

<body>
<div class="container-fluid users-table">
    <%--navbar--%>
    <div class="row">
        <div class="col-md-10 col-xs-12 col-md-offset-1 table-nav">
            <jsp:include page="parts/navbar.jsp"/>
        </div>
    </div>
以下是资源包:

我不明白为什么会这样


如何解决这个问题?

我的假设是你使用一个

不幸的是,出于向后兼容的原因,它无法读取除ISO-8859-1之外的任何其他编码的属性文件。您的属性文件似乎是用UTF-8编码的

演示:让我们在类路径的根目录下获取一个文件名
t.properties
,其内容用UTF-8编码:

mouton = bêêêê
现在,让我们试着打印出这个
mouton
键:

final ResourceBundle bundle = ResourceBundle.getBundle("t");
System.out.println(bundle.getString("mouton"));
输出:

bêêêê
bêêêê
垃圾

这就是为什么我开发了没有这个问题的产品;它可以读取UTF-8格式的i18n属性文件。演示:

// Reads in UTF-8 by default; can choose any encoding
final MessageBundle bundle = PropertiesBundle.forPath("t");
System.out.println(bundle.getMessage("mouton"));
输出:

bêêêê
bêêêê

“有趣的”是,它使用了一个(从1.6开始)但
ResourceBundle
没有使用的,也没有提供使用它的方法…

我找到了解决方案:

使用unicode
符号写入。为此:


IDEA——具有特殊的“透明本机到ASCII转换”选项(设置>文件编码)。

问题在于
ResourceBundle
。它无法读取除ISO-8859-1以外的任何其他编码的属性文件。。。如果您不坚持使用
ResourceBundle
,我有一个库,如果我不使用Maven,它可以提供帮助。我是否将其作为zip文件附加到项目中?这和btf,是;两者都可以在Bintray上下载。但是为什么不使用gradle(它比maven好)?你能简单地解释一下gradle是如何比maven好的吗?它在这里有什么帮助呢?例如,构建文件的编写时间较短;它可以做maven做的一切,再加上你想让它做的一切。您不受maven允许您做的事情的限制;)我将这个zip文件添加到类路径中,但它一直在胡言乱语。