1

そのため、クリップボードからテキストを正常にキャッチし、Java で System.out.println を介して印刷するプログラムを作成しました。次に、変更したテキストをクリップボードにコピーします。そのコードのスニペットを次に示します。

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

結果は変更された文字列であり、結果変数をコンソールに出力すると、まだ読み取り可能です。

その問題を克服するために私にできることはありますか?どんな答えでも大歓迎です、ありがとう:)

編集済み: 申し訳ありませんが、付箋や単語などの Windows プログラムにテキストをコピーすると、テキストを問題なく読み取ることができます。 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 に答える