ʻUtilisez Apache Tika Parsers pour lire comme
Stringde
Java quel que soit le
Charset` (code de caractère) du fichier.
Veuillez utiliser ʻApache Tika Parsers` de ce qui suit.
Cette fois, nous utilisons ʻUniversalEncodingDetector () pour obtenir
Charset et appelons le constructeur
Stringen fonction de
Charset`.
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)
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