获取剪贴板字符串编码(java)

时间:2013-06-11 00:44:14

标签: java string encoding

我想知道是否有一种方法可以使用Java来获取剪贴板上字符串的编码类型。 (我会提供更多详细信息,但问题相当简单)。

实施例。我进入unicode程序,复制文本,使用Java程序解密它,java程序吐出“UTF-16”

1 个答案:

答案 0 :(得分:0)

要访问剪贴板,您可以使用awt datatransfer classes。 要检测字符集,您可以使用CharsetDetector中的ICU project

以下是代码:

public static String getClipboardCharset () throws UnsupportedCharsetException, UnsupportedFlavorException, IOException {
    String clipText = null;
    final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    final Transferable contents = clipboard.getContents(null);
    if ((contents != null) && contents.isDataFlavorSupported(DataFlavor.stringFlavor))
        clipText = (String) contents.getTransferData(DataFlavor.stringFlavor);

    if (contents!=null && clipText!=null) {
        final CharsetDetector cd = new CharsetDetector();
        cd.setText(clipText.getBytes());
        final CharsetMatch cm = cd.detect();

        if (cm != null)
            return cm.getName();
    }

    throw new UnsupportedCharsetException("Unknown");
}

以下是所需的导入:

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import java.nio.charset.UnsupportedCharsetException;

import com.ibm.icu.text.CharsetDetector;
import com.ibm.icu.text.CharsetMatch;