2

Java を使用してクリップボード上の文字列のエンコーディング タイプを取得する方法があるかどうか疑問に思っていました。(詳細を説明しますが、質問はかなり簡単です)。

元。Unicode プログラムに入り、テキストをコピーし、Java プログラムを使用してそれを解読すると、Java プログラムは「UTF-16」を吐き出します。

4

1 に答える 1

0

クリップボードにアクセスするには、 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;
于 2013-06-11T01:20:26.487 に答える