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.
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)
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