Ily*_*ich 6 java jsp jstl utf-8 internationalization
我有以下index.jsp:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<fmt:setLocale value="ru_RU"/>
<fmt:setBundle basename="messages"/>
<html>
<head>
<title></title>
</head>
<body>
<h1><fmt:message key="login"/></h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
和属性文件messages_ru_RU.properties:
login = ?????
Run Code Online (Sandbox Code Playgroud)
问题是我在输出中得到了垃圾unicode字符:
Ëîãèí
Run Code Online (Sandbox Code Playgroud)
更新
将.properies文件编码更改为UTF-8.最新产品:Ðогин
请帮助我,将其更改为正常的西里尔字母.
Bal*_*usC 10
属性文件根据ISO-8859-1读取的规范.
...输入/输出流以ISO 8859-1字符编码进行编码.无法在此编码中直接表示的字符可以使用"Java™语言规范"第3.3节中定义的Unicode转义编写; 在转义序列中只允许一个'u'字符.native2ascii工具可用于将属性文件转换为其他字符编码或从其他字符编码转换.
因此,任何未被ISO-8859-1范围覆盖的字符都需要在Unicode转义序列 中进行转义\uXXXX.您可以使用JDK提供的native2ascii工具进行转换.您可以在JDK的/bin文件夹中找到它.
这是一个例子,假设foo_utf8.properties你是使用UTF-8保存的那个foo.properties,你想在你的应用程序中使用它:
native2ascii –encoding UTF-8 foo_utf8.properties foo.properties
Run Code Online (Sandbox Code Playgroud)
在您的特定情况下,相关财产将转换为:
login = \u041B\u043E\u0433\u0438\u043D
Run Code Online (Sandbox Code Playgroud)
然后可以使用以下最低@page配置成功读取并显示在JSP页面中:
<%@ page pageEncoding="UTF-8" %>
Run Code Online (Sandbox Code Playgroud)
(你所拥有的余数是无关紧要的,因为那些是上面设置时的默认值)
如果您使用的是Java感知IDE(如Eclipse),那么您可以使用其内置属性文件编辑器,该编辑器应自动与.propertiesJava面向项目中的文件相关联.如果您使用此编辑器而不是纯文本编辑器/源编辑器,那么它将自动转义ISO-8859-1范围未涵盖的字符.
| 归档时间: |
|
| 查看次数: |
1909 次 |
| 最近记录: |