[Java] Obtenir le jeu de caractères avec Apathce Tika / Initialiser la chaîne à partir du jeu de caractères [Kotlin]

Choses à faire

ʻUtilisez Apache Tika Parsers pour lire comme StringdeJava quel que soit le Charset` (code de caractère) du fichier.

Veuillez utiliser ʻApache Tika Parsers` de ce qui suit.

manière

Cette fois, nous utilisons ʻUniversalEncodingDetector () pour obtenir Charset et appelons le constructeur Stringen fonction deCharset`.

Dans l'exemple, ʻInputStream etc. est utilisé pour initialiser TikaInputStream, mais il y a plusieurs façons de le faire, donc veuillez vous référer à chaque document. Il en va de même pour l'initialisation de String`.

//Les métadonnées sont renommées et utilisées car elles portent le nom de Kotlin.
import org.apache.tika.metadata.Metadata as TikaMetadata

/**
 *Codage des caractères du fichier d'entrée
 */
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(/*Une sorte d'InputStream, etc.*/, metadata)

if (charset == null) throw Exception("Le code de caractère n'a pas pu être obtenu.")

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

Sentant que j'ai essayé

Avec / sans bombes telles que Shift-JIS et ʻUTF-8` pourraient être manipulées normalement. Cependant, dans le cas de «Shift-JIS», qui n'inclut pas beaucoup de japonais, l'analyse a parfois échoué et les caractères ont été déformés.

L'analyse de code de caractère sans information préalable n'a d'autre choix que de s'appuyer sur des méthodes statistiques, donc je pense qu'aucune méthode ne peut être aidée, mais je pense que nous devons garder à l'esprit qu'il peut y avoir des échecs.

Recommended Posts

[Java] Obtenir le jeu de caractères avec Apathce Tika / Initialiser la chaîne à partir du jeu de caractères [Kotlin]
[Java] Récupère MimeType à partir du contenu du fichier avec Apathce Tika [Kotlin]
[Java] Obtenez des métadonnées à partir de fichiers avec Apathce Tika, et obtenez la largeur et la hauteur des images / vidéos à partir des métadonnées [Kotlin]
[Java] Analyser les fichiers Excel (non limités à divers) avec Apathce Tika [Kotlin]
[Java] Obtenir KFunction à partir de la méthode / du constructeur en Java [Kotlin]
[Java] Initialisation, ajout, acquisition
Appeler une méthode avec le bloc de rappel de Kotlin depuis Java
[Java] Obtenir KClass en Java [Kotlin]
[Kotlin] Obtenez le constructeur / la méthode Java de KFunction et appelez-le
[Java] Générer un URI de données à partir d'une chaîne d'octets du contenu du fichier [Kotlin]
[Java] Comment convertir du type String en type Path et obtenir le chemin
Coder Java depuis Emacs avec Eclim
Obtenir le pays à partir de l'adresse IP (Java)
Travailler avec des feuilles de calcul Google à partir de Java
[Java] Obtenir et gérer Json à partir d'une URL avec une API standard (javax.script)
[Kotlin] Gérez les champs Java de Kotlin en toute sécurité avec les annotations NotNull (NonNull) / Nullable [Java]
Conversion pleine largeur → demi-largeur avec Java String (kana pleine largeur → kana demi-largeur)
[Java] Obtenir des éléments List / Map avec Iterator
[Kotlin] Trois façons d'obtenir un cours depuis KClass
Appeler la bibliothèque Java à partir de C avec JNI
Intégration API de Java avec Jersey Client
Obtenir des informations sur l'appelant à partir de la trace de la pile (Java)
Introduction à Java à partir de 0 Partie 1
[Java] Obtenir des informations sur les balises à partir de fichiers musicaux
[Kotlin] Supprimer les fichiers en double [Java]
Obtenir l'historique du serveur Zabbix en Java
Diviser une chaîne avec ". (Dot)" en Java
Conseils d'interopérabilité avec Kotlin à envoyer aux développeurs Java
Obtenez des horodatages avec le SDK Java Azure BlobStorage
Mémo pour la migration de Java vers Kotlin
Exécutez du code Java à partir de cpp sur cocos2dx
Conversion de type du type java Big Decimal au type String
[Java] Obtenez la date avec la classe LocalDateTime