Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 国际化使用JSP中的资源包属性,非拉丁语文本变为Mojibake_Java_Jsp_Utf 8_Internationalization_Jstl - Fatal编程技术网

Java 国际化使用JSP中的资源包属性,非拉丁语文本变为Mojibake

Java 国际化使用JSP中的资源包属性,非拉丁语文本变为Mojibake,java,jsp,utf-8,internationalization,jstl,Java,Jsp,Utf 8,Internationalization,Jstl,我有以下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>

我有以下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>
问题是我在输出中得到了垃圾unicode字符:

Ëîãèí
更新

将.properies文件编码更改为UTF-8。 最新输出:ÐоÐин

请帮我把这个改成普通的西里尔字母

属性文件:

属性文件按照ISO-8859-1读取

。。。输入/输出流采用ISO 8859-1字符编码。在这种编码中不能直接表示的字符可以使用Java规范第3.3节中定义的Unicode转义来编写™ 语言规范;转义序列中只允许一个“u”字符。native2ascii工具可用于在其他字符编码之间转换属性文件

因此,任何不在范围内的字符都需要在
\uxxx
中转义。您可以使用JDK提供的
native2ascii
工具来转换它们。您可以在JDK的
/bin
文件夹中找到它

下面是一个示例,假设
foo\u utf8.properties
是您使用UTF-8保存的属性,而
foo.properties
是您希望在应用程序中使用的属性:

native2ascii–编码UTF-8 foo\u utf8.properties foo.properties
在您的特定情况下,相关财产将转换为:

login=\u041B\u043E\u0433\u0438\u043D
然后,可以通过以下最低
@page
配置成功读取并显示在JSP页面中:

<%@ page pageEncoding="UTF-8" %>

(您拥有的剩余部分是不相关的,因为在设置上述内容时,这些都是默认值)

如果您使用的是一个支持Java的IDE,比如Eclipse,那么您可以使用它的内置属性文件编辑器,它应该自动与Java分面项目中的
.properties
文件关联。如果使用此编辑器而不是纯文本编辑器/源代码编辑器,则它将自动转义ISO-8859-1范围中未包含的字符

另见:


我的印地语也有同样的问题,所以我将页面编码改为UTF-8,并使用Unicode编码保存文件。因为我在.properties文件中给出了Unicode。这对我很有用。

因为Java SE属性文件是以UTF-8编码加载的


请参阅和

UTF-8中的*.properties文件是否已更改?@DmitryTsechoev将字符集更改为UTF-8。新输出为:ÐоÐин
<%@ page pageEncoding="UTF-8" %>