【已解决】Java “错误:编码GBK 的不可映射字符”
正文
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Robot {
public static void main(String[] args) {
try {
while (true) {
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
String now = formatter.format(new Date());
System.out.println(now);
if ("21:21".equals(now) && true) {
java.awt.Robot robot = new java.awt.Robot();
robot.delay(1000);//延时
for (int j = 0; j <= 10; j++) {
robot.mouseMove(520, 206); //鼠标移动到指定的坐标
}
robot.delay(1000);//延时
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); //鼠标左键按下
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //鼠标左键抬起
robot.delay(500);
setClipboardString("517应到6人,实到2人,李洋,刘泽宇,李庶祎回家,吴语科离校线上实习。");
robot.delay(200);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(1000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.delay(1000);
Thread.sleep(1000*60);
}
}
}catch (Exception e) {
e.printStackTrace();
}
}
public static void setClipboardString(String text) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable trans = new StringSelection(text);
clipboard.setContents(trans, null);
}
}
发现问题
命令行编译:javac Robot.java
编译结果:Java “错误:编码GBK 的不可映射字符”
分析问题
这是Java中典型的中文转码问题
打开.java文件,发现编码格式是UTF-8
解决问题
- 方法一
命令行编译:javac -encoding UTF-8 Robot.java
命令行运行:java Robot
- 方法二
将文件另存为ANSI
编码格式
此时即可正常编译-运行