[Java] Zeichensatz mit Apathce Tika abrufen / String von Zeichensatz initialisieren [Kotlin]

Dinge die zu tun sind

Verwenden Sie "Apache Tika Parsers", um als "String" von "Java" zu lesen, unabhängig vom "Zeichensatz" (Zeichencode) der Datei.

Bitte verwenden Sie "Apache Tika Parsers" aus dem Folgenden.

Weise

Dieses Mal verwenden wir "UniversalEncodingDetector ()", um "Charset" abzurufen und den "String" -Konstruktor gemäß "Charset" aufzurufen.

In diesem Beispiel wird "InputStream" usw. verwendet, um "TikaInputStream" zu initialisieren. Es gibt jedoch mehrere Möglichkeiten, dies zu tun. Lesen Sie daher die einzelnen Dokumente. So ist die Initialisierung von String.

//Metadaten werden umbenannt und verwendet, da sie den Namen Kotlin haben.
import org.apache.tika.metadata.Metadata as TikaMetadata

/**
 *Zeichenkodierung der Eingabedatei
 */
fun getCharset(input: InputStream, metadata: TikaMetadata): Charset? {
    val encordingDetector = UniversalEncodingDetector()
    return TikaInputStream.get(input)
            .let { encordingDetector.detect(it, metadata) }
}

val metadata = TikaMetadata()

val charset = getCharset(/*Eine Art InputStream usw.*/, metadata)

if (charset == null) throw Exception("Der Zeichencode konnte nicht erhalten werden.")

val result = String(/*ByteArray usw.*/, charset)

Ich habe es versucht

Mit / ohne Bomben von "Shift-JIS" und "UTF-8" usw. konnte normal gehandhabt werden. Im Fall von "Shift-JIS", das nicht viel Japanisch enthält, schlug die Analyse jedoch manchmal fehl und die Zeichen wurden verstümmelt.

Die Analyse des Zeichencodes ohne vorherige Informationen hat keine andere Wahl, als sich auf statistische Methoden zu verlassen. Ich denke, dass jeder Methode nicht geholfen werden kann, aber ich denke, wir sollten bedenken, dass es Fehler geben kann.

Recommended Posts

[Java] Zeichensatz mit Apathce Tika abrufen / String von Zeichensatz initialisieren [Kotlin]
[Java] Holen Sie sich MimeType aus dem Inhalt der Datei mit Apathce Tika [Kotlin]
[Java] Mit Apathce Tika Metadaten aus Dateien abrufen und Breite und Höhe von Bildern / Videos aus Metadaten abrufen [Kotlin]
[Java] Analysieren Sie Excel-Dateien (nicht auf verschiedene Dateien beschränkt) mit Apathce Tika [Kotlin]
[Java] KFunction von Method / Constructor in Java abrufen [Kotlin]
[Java] Initialisierung, Hinzufügung, Erfassung
Rufen Sie eine Methode mit Kotlins Rückrufblock von Java aus auf
[Java] KClass in Java herunterladen [Kotlin]
[Kotlin] Holen Sie sich Java Constructor / Method von KFunction und rufen Sie es auf
[Java] Generieren Sie einen Daten-URI aus einer Byte-Zeichenfolge mit Dateiinhalten. [Kotlin]
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
Code Java von Emacs mit Eclim
Land von IP-Adresse abrufen (Java)
Arbeiten Sie mit Google-Tabellen aus Java
[Java] Json von der URL mit der Standard-API (javax.script) abrufen und verarbeiten
[Kotlin] Behandeln Sie Java-Felder sicher aus Kotlin mit NotNull (NonNull) / Nullable-Annotationen. [Java]
Konvertierung in voller Breite → halbe Breite mit Java-Zeichenfolge (Kana in voller Breite → Kana in halber Breite)
[Java] Listen- / Kartenelemente mit Iterator abrufen
[Kotlin] Drei Möglichkeiten, um Klasse von KClass zu bekommen
Rufen Sie die Java-Bibliothek von C mit JNI auf
API-Integration von Java mit Jersey Client
Abrufen von Anruferinformationen aus dem Stack-Trace (Java)
Einführung in Java ab 0 Teil 1
[Java] Tag-Informationen aus Musikdateien abrufen
[Kotlin] Doppelte Dateien löschen [Java]
Abrufen des Verlaufs vom Zabbix-Server in Java
Teilen Sie eine Zeichenfolge in Java mit ". (Dot)"
Tipps zur Interoperabilität mit Kotlin zum Senden an Java-Entwickler
Holen Sie sich Zeitstempel mit dem Azure BlobStorage Java SDK
Memo für die Migration von Java nach Kotlin
Führen Sie Java-Code von cpp auf cocos2dx aus
Typkonvertierung vom Java Big Decimal-Typ zum String-Typ
[Java] Ermitteln Sie das Datum mit der LocalDateTime-Klasse