12

私のAndroidアプリには、tess-twoライブラリを使用したOCR機能があります。「fi」を含む文字列を読み取る際にこの問題が発生します。baseApi.getUTF8Text() ( OCR によって認識されたテキストを取得するメソッド) の後に、その "fi" で返される文字列は" fi " <<<- - - その文字列に非常に注意してください。2文字の文字列ではなく、1文字の文字列です。コピー&ペーストで再現できます。今、私は十分な知識を持っていないUTF8エンコーディングなどの問題ではないかと考えています。string.replace("fi","fi")を実行しようとすると、Android Studio はutf-8 をエンコードするためのマッピング不可能な文字でエラーをビルドします. Google で検索してみましたが、「fi」ではなく、通常の「fi」として認識されます。

この性格を治す方法はありますか?

4

2 に答える 2

6
于 2015-09-05T02:34:55.163 に答える
2

これが私が見つけたものです、FWIW:文字「fi」は合字です(詳細: Unicode Character 'LATIN SMALL LIGATURE FI' (U+FB01) )

これは、「fi」を見つけて他の文字に置き換えるための簡単で汚いプログラムです。

public class LigatureFI
{

    static char ligature_fi = 0xFB01;

    public static void main(String[] args)
    {
        String sligature_fi = Character.toString(ligature_fi);
        String string = new String("fififififififififififififififi");
        System.out.println(string);
        string = string.replaceAll(sligature_fi, "FI");
        System.out.println(string);
    }

}

IDE が「fi」が cp1252 文字セットにないというエラーを出す場合は、UTF8 で保存してください。

HTH。

于 2015-09-03T04:00:53.420 に答える