IntelliJ IDEA 设置编码

lioushuei 2009-06-08 03:43:21
刚接触IntelliJ IDEA ,编译的时候总是提示 warning(,)编码 GB18030 的不可映射字符

我java文件的encoding 已经是UTF-8了 ,怎么编码的时候 会用 GB18030 编码? 怎么改?
...全文
105174 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shreksu 2010-08-23
  • 打赏
  • 举报
回复
從file-》settings,裏面選擇file encoding 選擇 utf-8
wfg114 2009-06-15
  • 打赏
  • 举报
回复
你可以点 工具栏的 象是工具搬手的那个按钮(settings),IDE Settings 的第一个选项,General ,这个页面的中间外有一个 Default encoding :在这个选项中就有各种编码,也有你想要的 utf-8
  • 打赏
  • 举报
回复
我又也遇到了这个问题,应该是说系统缺省编码是GB18030,用GB18030解析文件时遇到不可映射字符
解决办法是把文件打开另存为ANSI或GB2312,如果文件太多(我遇到的情况是代码工具生成的WebService客户端代码不是GB18030编码),网上找来一段代码解决:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.io.Writer;

public class EncodeConverter {
// 原文件目录,需要根据你的情况修改
private static String srcDir = "d:\\src";
// 转换后的存放目录,需要根据你的情况修改
private static String desDir = "d:\\dest";
// 源文件编码
private static String srcEncode = "UTF-8";
// 输出文件编码
private static String desEncode = "gb2312";

// 处理的文件过滤,过滤器
private static FileFilter filter = new FileFilter() {
public boolean accept(File pathname) {
// 只处理:目录 或是 .java文件
if (pathname.isDirectory()
|| (pathname.isFile() && pathname.getName().endsWith(
".java")))
return true;
else
return false;
}
};

/**
* @param file
*/
public static void readDir(File file)
{
// 以过滤器作为参数
File[] files = file.listFiles(filter);
for (File subFile : files) {
// 建立目标目录
if (subFile.isDirectory()) {
File file3 = new File(desDir + subFile.getAbsolutePath().substring(srcDir.length()));
if (!file3.exists()) {
file3.mkdir();
}
file3 = null;
readDir(subFile);
} else {
System.err.println("一源文件:\t"+subFile.getAbsolutePath() + "\n目标文件:\t" + (desDir + subFile.getAbsolutePath().substring(srcDir.length())));
System.err.println("-----------------------------------------------------------------");
try {
convert(subFile.getAbsolutePath(), desDir + subFile.getAbsolutePath().substring(srcDir.length()), srcEncode, desEncode);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

/**
*
* @param infile 源文件路径
* @param outfile 输出文件路径
* @param from 源文件编码
* @param to 目标文件编码
* @throws IOException
* @throws UnsupportedEncodingException
*/
public static void convert(String infile, String outfile, String from,
String to) throws IOException, UnsupportedEncodingException {
// set up byte streams
InputStream in;
if (infile != null)
in = new FileInputStream(infile);
else
in = System.in;
OutputStream out;
if (outfile != null)
out = new FileOutputStream(outfile);
else
out = System.out;

// Use default encoding if no encoding is specified.
if (from == null)
from = System.getProperty("file.encoding");
if (to == null)
to = System.getProperty("file.encoding");

// Set up character stream
Reader r = new BufferedReader(new InputStreamReader(in, from));
Writer w = new BufferedWriter(new OutputStreamWriter(out, to));

// Copy characters from input to output. The InputStreamReader
// converts from the input encoding to Unicode,, and the
// OutputStreamWriter
// converts from Unicode to the output encoding. Characters that cannot
// be
// represented in the output encoding are output as '?'
char[] buffer = new char[4096];
int len;
while ((len = r.read(buffer)) != -1)
w.write(buffer, 0, len);
r.close();
w.flush();
w.close();
}


public static void main(String[] args) {
// 建立目标文件夹
File desFile = new File(desDir);
if (!desFile.exists()) {
desFile.mkdir();
}
desFile = null;

File srcFile = new File(srcDir);
// 读取目录 循环转换文件
readDir(srcFile);
srcFile = null;
}
}
studying_ 2009-06-13
  • 打赏
  • 举报
回复
Setting->File Encoding->utf-8


但是在实际的开中,有一些文件是能描述自身编码的,如xml和html。xml可以通过encoding来指定编码方式,而html通过content-type方式来指定,如果打开这些文件,就会调用相应的编码方式来处理。在开发中,我们通常会从一种编码方式转换到另一种编码,在IDEA中 ,如果你将这些自身带有编码信息的文件的编码声明改变的话,对应的文件编码也会改变。如将一个utf-8的xml文件的encoding更改为GBK,那么文件的编码也会自动进行转换并进行保存,同样修改html的content-type或jsp的content-type都会引发文件的编码自动转换,这样的处理对编码转换非常有好处,在google上你可以搜索到很多编码转换的工具,但这一切IDEA都在自动帮你搞定。如果你想快速查看一个文件的编码,最好安装File Info插件,按下Ctrl+F10马上就可以了解文件的编码方式。
lioushuei 2009-06-08
  • 打赏
  • 举报
回复
最下缘的状态条 有个显示的是一个灰色的 uft-8 点击没反应
  • 打赏
  • 举报
回复
idea窗口最下缘的状态条,中间靠右可点击选择编码 GB18030
如果文件不多,用notepad或editplus挨个打开存为GB2312

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧