gpt4 book ai didi

java - Maven UTF-8 编码问题

转载 作者:行者123 更新时间:2023-11-30 06:45:55 25 4
gpt4 key购买 nike

当我用两个不同的项目运行下面的代码时,我得到不同的输出。

    String myString = "Türkçe Karakter Testi : ğüşiöçĞÜİŞÇÖĞ";
String value = new String(myString.getBytes("UTF-8"));
System.out.println(value);

第一个项目是在 Netbeans 8.2 中创建的非 Maven Java 应用程序。它给了我预期的结果。

“Türkçe Karakter Testi : ğüşiöçĞÜİŞÇÖĞ”

第二个项目是 maven java 应用程序项目,它使用以下 pom.xml 文件以相同的方式创建:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>mavenproject1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>

这个项目给我:

“Türkçe Karakter Testi : ğüşiöçÄ?ÜİÅ?ÇÖÄ?"

我用notepad++检查了两个文件,它们都是用UTF-8编码的

最佳答案

您缺少 new String() 构造函数的编码,因此它使用您平台的默认编码,不是 UTF-8 (看起来像 ISO-8859-1 的一些变体)。

如果您使用以下代码(这没有多大意义,但显示了默认编码的拙劣之处),您会看到它在任何地方都正确打印。

String myString = "Türkçe Karakter Testi : ğüşiöçĞÜİŞÇÖĞ";
String value = new String(myString.getBytes("UTF-8"), "UTF-8");
System.out.println(value);

这里的教训是什么?在处理 byte/character 转换时,始终指定要使用的编码!这包括 String.getBytes()new String()new InputStreamReader() 等方法。

这只是字符编码在背后咬你的众多方法之一。这似乎是一个简单的问题,但它总是会捕获毫无戒心的开发人员。

关于java - Maven UTF-8 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48278786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com