1

因此,我制作了一个程序,它成功地从剪贴板捕获文本并通过 Java 中的 System.out.println 打印出来。然后,我想将修改后的文本复制到剪贴板。这是该代码的片段:

                 StringSelection ss = new StringSelection(result);                        
                 Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);

结果是修改后的字符串,当我将结果变量打印到控制台时,它仍然可读。但是,剪贴板上复制的文本似乎与原始文本的编码不同,而是显示不可读的字符。

我能做些什么来克服这个问题吗?任何答案都非常感谢,谢谢:)

编辑:对不起,事实证明,当复制到任何 Windows 程序(如便笺、单词等)时,文本可读性很好。但是当我将它复制到 Atlas Translator 时,它似乎无法读取 Unicode 编码流我怀疑java中的默认编码。

所以,我修改后的问题是:如何转换字符串选择,使其具有日语编码,但不是 Unicode?任何答案都非常感谢,谢谢!:)

4

1 回答 1

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;
    }
于 2012-06-20T05:32:42.147 回答