java项目编码不统一, java:编码utf-8的不可映射字符

我们在进行JAVA开发时,避免不了引入一些第三方的文件,但有些第三方文件在编写的时候默认的编码可能不是UTF-8的,这将会导致在idea中乱码,并且如果编译级别够高还会引起编译错误,比如:

java项目编码不统一, java:编码utf-8的不可映射字符_第1张图片

报错如下:

java项目编码不统一, java:编码utf-8的不可映射字符_第2张图片

那么在IDEA中如何解决此类问题呢?

reload 重新使用指定的编码进行加载

打开乱码文件,在编辑器的右下角找到如下字样并点击:

java项目编码不统一, java:编码utf-8的不可映射字符_第3张图片

注意:较低版本的idea可以在在乱码的文件上点右键,然后点选择 FileEncoding 选项

再然后按以下动图操作:

java项目编码不统一, java:编码utf-8的不可映射字符_第4张图片

此时我们告知IDEA说,此文件的编码是GB2312,你使用GB2312渲染并重新打开。然后就能正常显示了。但此操作并没有改变文件的编码格式,也就是说该文件的编码仍然是gb2312,并不符合我们对代码编码必须是utf-8的要求。所以编译仍然会报错。

convert 转换,将文件的编码转换为utf-8

此时,我们再次点击文件右下角的文件编码设置(此时为gb2312)

java项目编码不统一, java:编码utf-8的不可映射字符_第5张图片

再然后按以下动图操作:

java项目编码不统一, java:编码utf-8的不可映射字符_第6张图片

上述操作是说,将当前文件编码转换为utf-8的。经过以上操作后,原来gb2312的乱码文件已经变成了可以实别的utf-8了。再编译当然就不会报错了。

reload by gb2312: 使用gb2312编码重新打开,并没有改变文件的任何内容;convert to utf-8: 将此文件转化为utf-8编码,并以utf-8编码重新打开。此时将改变文件的内容,将里面的文字由gb2312编码变更为utf-8编码。文件的具体内容已经发生了变化。

批量转换

如果文件过多的话,一个个这样转换的话相信你一定会很头疼。在此,以macos系统为例(windows中应该有批量转换的软件)抛砖引玉,给大家提供一个思路。

步骤如下:
1 批量转码,并另存为.bak文件

find *.java -exec sh -c "iconv -f GB2312 -t UTF8 {} > {}.bak" \;  

此时,原来GB2312的每个文件都对应生成了一个.bak文件,此bak文件的编码为utf-8

2 删除原文件

rm *.java

此时原GB2312的文件就被我们删除了。

  1. 将.bak文件批量改名

使用finder打开文件夹,选中所有的文件。右键 -> 批量重命名 将.bak 替换为空。此时便恢复了原来的文件名,并且编码变更为utf-8了。

你可能感兴趣的:(gb2312,idea)