maven修改默认编码格式为UTF-8

本文讲述了在使用Maven打包过程中遇到的GBK编码问题,解决方法包括检查IDEA文件编码设置为UTF-8以及在命令行中通过设置MAVEN_OPTS环境变量确保编码格式转换。

执行mvn -version查看maven版本信息发现,maven使用的编码格式为GBK。
在这里插入图片描述
为什么想到要修改编码格式呢?因为idea中我将文件格式统一设置为UTF-8(如果不知道如何修改文件编码,可以参考文末),然后使用maven打包时报错“编码GBK的不可映射字符”
在这里插入图片描述

解决方法

新建环境变量如下:
变量名 MAVEN_OPTS
变量值 -Xms256m -Xmx512m -Dfile.encoding=UTF-8
在这里插入图片描述
重新打开(重新打开新增的环境变量才会生效)命令行窗口输入mvn -version就会看到编码格式变为了UTF-8
在这里插入图片描述

修改idea文件编码格式

点击File -> settings,搜索“encod”就会看到File Encodings选项,点击该选项,将对应选项的编码改为utf-8保存即可
在这里插入图片描述

* Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. * Exception is: java.lang.RuntimeException: org.gradle.api.internal.catalog.GeneratedClassCompilationException: Unable to compile generated sources: - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xF2) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xC8) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xDC) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0x8A) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0x92) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xE584) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xDF) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0x93) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0x95) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xD3) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0x87) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0x98) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xD1) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xFD) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xE8) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xEE) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xEE) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xA4) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xE7) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0x94) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xE3A2) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xCE) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xBA) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0x87) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xEB) - File LibrariesForLibs.java, line: 1, 编码 UTF-8 的不可映射字符 (0xA4) - F
07-22
在发送带有参数的 HTTP 请求时,如果参数中包含中文或其他非 ASCII 字符,必须正确设置字符编码以避免乱码问题。在 Java 中使用 `HttpClient 5.4.3` 时,可以通过 `URIBuilder` 自动处理参数的 URL 编码,并确保使用 UTF-8 编码格式。 `URIBuilder` 默认使用 UTF-8 对参数进行编码,这可以有效避免中文字符或特殊字符导致的乱码问题。例如,当参数中包含空格、中文或 HTML 特有的字符(如 ` `)时,`URIBuilder` 会自动将其转换为合法的 URL 编码形式,确保服务器能够正确解析请求参数[^2]。 以下是使用 `URIBuilder` 设置参数并指定 UTF-8 编码的示例代码: ```java import org.apache.hc.client5.http.classic.methods.HttpGet; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.ClassicHttpResponse; import org.apache.hc.core5.http.io.entity.EntityUtils; import org.apache.hc.core5.net.URIBuilder; import java.net.URI; import java.net.URISyntaxException; public class HttpGetWithUtf8Params { public static void main(String[] args) { try (CloseableHttpClient httpClient = HttpClients.createDefault()) { URIBuilder uriBuilder = new URIBuilder("https://www.example.com/search"); // 添加中文参数,URIBuilder 默认使用 UTF-8 编码 uriBuilder.addParameter("q", "你好 HttpClient"); uriBuilder.addParameter("page", "1"); URI uri = uriBuilder.build(); HttpGet httpGet = new HttpGet(uri); try (ClassicHttpResponse response = httpClient.execute(httpGet)) { int statusCode = response.getCode(); System.out.println("响应状态码: " + statusCode); if (response.getEntity() != null) { String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("响应内容: " + responseBody); } } } catch (URISyntaxException | java.io.IOException e) { e.printStackTrace(); } } } ``` 在上述代码中,`URIBuilder.addParameter()` 方法会自动对参数值进行 UTF-8 编码,确保中文字符能够被正确传输和解析。这种方式不仅提高了代码的可读性和可维护性,还避免了手动拼接 URL 可能引发的编码错误问题[^1]。 此外,在 Maven 构建项目时,若涉及资源文件的拷贝操作,也可以通过配置 `maven-resources-plugin` 来指定使用 UTF-8 编码,以保持项目中字符编码的一致性[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值