【已解决】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
编码格式
此时即可正常编译-运行