Java 胡言乱语
我想将i18n添加到我的web项目中 但我觉得它在我之前是胡言乱语的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
<%@ 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文件添加到类路径中,但它一直在胡言乱语。