当前位置: 首页 > 知识库问答 >
问题:

将项目编码设置为UTF-8,默认字符集返回windows-1252

冷俊健
2023-03-14

我遇到了一个编码问题。不确定它是否与IDE相关,但我使用的是NetBeans 7.4。我在J2EE项目中得到了这段代码

    String test = "kukuřičné";
    System.out.println(new String(test.getBytes("UTF-8"))); // should display ok
    System.out.println(new String(test.getBytes("ISO-8859-1")));
    System.out.println(new String(test.getBytes("UTF-16")));
    System.out.println(new String(test.getBytes("US-ASCII")));
    System.out.println(new String(test.getBytes("windows-1250")));
    System.out.println(test); // should display ok

当我运行它时,它从来没有正确显示。UTF-8应该可以打印出来,但它没有。还有当我尝试:

    System.out.println(Charset.defaultCharset());

它返回了windows-1252。项目设置为UTF-8编码。我甚至尝试过用UTF-8重新保存这个特定的java文件,但它仍然不能正确显示。

另一方面,我尝试创建J2SE项目,当我运行相同的代码时,它会正确显示。默认字符集也返回UTF-8。

两个项目都设置了UTF-8编码。

我希望我的J2EE项目的行为与J2SE项目相同。直到我将java更新到版本1.7.0_51-b13,我才注意到这个问题,但我还是不确定这是否相关。

我也遇到了和这家伙一样的问题:http://forums.netbeans.org/ptopic37752.html

我还尝试为整个IDE设置默认编码:-J-Dfile.encoding=UTF-8,但没有帮助。

我注意到一个重要的事实。当我创建一个新的web应用程序时,它显示ok。当我创建新的Maven web应用程序时,它显示不正确。

在这里发现了同样的问题:https://netbeans.org/bugzilla/show_bug.cgi?id=224526

我还没修好。仍然没有有效的解决方案。

在我的pom里。xml编码设置正确,但最后仍显示windows-1252。

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

共有2个答案

裴俊智
2023-03-14

您在这里混合了几个概念:

  • 项目编码是用于保存Java源文件的编码(xxxx.java)-它与代码的执行方式无关
  • test.getBytes("UTF-8")UTF-8编码中返回表示您的String的一系列字节
  • 要重新创建原始字符串,您需要显式地给出编码,除非它是您的机器的默认值:new String(test.getBytes(UTF-8),Standard Charset。UTF_8)
诸葛雨泽
2023-03-14

我花了几个小时试图找到最好的解决办法

首先,这是一个maven的问题,它拾取平台编码并使用它,即使您指定了要使用的不同编码。Maven似乎并不在意(它甚至会向控制台打印它正在使用UTF-8,但是当你运行上面代码的文件时,它不会正确显示)。

我通过设置一个系统变量来解决这个问题:

JAVA_工具_选项=-Dfile。编码=UTF8

应该有另一个选项来代替设置系统变量,那就是将其设置为额外的编译器参数。

比如javac-Dfile。编码=UTF8

 类似资料:
  • 问题内容: 他们在“ PHP Cookbook”中说(第589页),要将传出数据的char编码正确设置为utf-8,必须将配置编辑为utf-8。 但是,我在中找不到此配置。我是否应该简单地添加一行内容? 我有一个。如您所见(),目前尚未激活。我应该删除分号并将其设置为吗?这样可以处理默认编码吗? 我还发现了其他我不知道该怎么做的编码指令: 有什么原因为什么我不能简单地将它们全部替换为? 问题答案:

  • 我正在Ubuntu中运行httpd+mod_jk+2个tomcat服务器。当我以非拉丁语言提交表单时,我会在DB中得到垃圾。如果我通过Tomcat提交相同的表单,直接绕过httpd,那么一切看起来都很好。以下是我的配置: /ETC/APACHE2/CONF.D/CHARSET: Tomcat1: Tomcat2: JDBC连接: jdbc:mysql://localhost:3306/myapp?

  • 问题内容: 下面是我的代码,它打算获取两个.ckl文件,比较两个文件,添加新项目并创建一个新的合并文件。该程序在Netbeans中运行时可以正确执行,但是,当执行.jar时,该程序似乎未使用UTF-8编码文件。我对编程很陌生,想知道在什么地方或如何执行这种编码? **我删除了Swing代码和其他行,以便仅显示我的方法,该方法完成所有比较和合并。 问题答案: Java具有广泛的,内容丰富的文档。保留

  • 问题内容: 我有一个带有“ñ”字符的字符串,并且我有一些问题。我需要将此字符串编码为UTF-8编码。我已经通过这种方式尝试过,但是没有用: 如何将该字符串编码为utf-8? 问题答案: Java中的对象使用无法修改的UTF-16编码。 唯一可以使用不同编码的是。因此,如果你需要UTF-8数据,则需要一个。如果你有一个包含意外数据的,则问题出在较早的地方,该错误地将一些二进制数据错误地转换为a (即

  • 我有一个jsp文件,在那里我收集表单值,并通过jQuery Ajax将其发送到strut 2 action class。 我的Ajax函数看起来像 当我解码并提醒它的文本我正确编码和解码。 当我通过ajax将其发送到struts2时,它会产生问题。 我已经检查了Interceptor中的值它显示值??????? 拦截器 在我的jsp文件中,我将内容类型设置为UTF-8,在ajax中,我也检查了内容

  • 问题内容: 如何通过编程正确设置JVM(1.5.x)使用​​的默认字符编码? 我读过,这-曾经是使用旧JVM的方法。由于没有理由,我没有那么奢侈。 我试过了: 并且该属性被设置,但似乎不会导致下面的最终调用使用UTF8: 问题答案: 不幸的是,必须在JVM启动时指定该属性。通过输入你的主要方法时,编码中使用的字符由和默认的构造函数,并已被永久缓存。 正如指出的那样,在这种特殊情况下, 可以使用环境