我想知道是否有一种方法可以使用 Java 来获取剪贴板上字符串的编码类型。(我会提供更多细节,但问题相当直接)。
前任。我进入一个unicode程序,复制文本,用Java程序解密,java程序吐出“UTF-16”
要访问剪贴板,您可以使用awtdatatransfer
类。要检测字符集,您可以使用CharsetDetector
from 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;