所以,我已经制作了一个程序,可以成功地从剪贴板中捕获文本并通过Java中的System.out.println进行打印。然后,我想将修改后的文本复制到剪贴板。以下是该代码的片段:
StringSelection ss = new StringSelection(result);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
结果是修改后的String,当我将结果变量打印到控制台时,它仍然可读。但是,剪贴板上复制的文本似乎与原始文件的编码不同,而是显示不可读的字符。
我能做些什么来克服这个问题吗?非常感谢您的回答,谢谢:)
EDITED: 对不起,事实证明,文本在复制到任何Windows程序(如便签,单词等)时都可读。但是当我将其复制到Atlas Translator时,似乎无法读取我怀疑的Unicode编码流java中的默认编码。
所以,我修改过的问题是:我如何转换字符串选择,使其具有日语编码,但不是Unicode?非常感谢任何答案,谢谢! :)
答案 0 :(得分:0)
试试这个程序,将解决您的问题
public class UTFDemo {
public static void main(String s[]) {
//String message = "Езикова";
String message = "LiuYan 刘研";
System.out.println("Original Message : " + message);
StringSelection ss = new StringSelection(message);
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
cb.setContents(ss, null);
String result = getClipboardContents();
System.out.println("Result : " + result);
}
public static String getClipboardContents() {
String result = "";
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
//odd: the Object param of getContents is not currently used
Transferable contents = clipboard.getContents(null);
boolean hasTransferableText =
(contents != null)
&& contents.isDataFlavorSupported(DataFlavor.stringFlavor);
if (hasTransferableText) {
try {
result = (String) contents.getTransferData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException ex) {
//highly unlikely since we are using a standard DataFlavor
System.out.println(ex);
ex.printStackTrace();
} catch (IOException ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
return result;
}