Streamreader et les caractères étrangers
Qui l'encodage doit-je utiliser pour lire ĉ,Ĝ,å,ä,ö,ü etc?
Vous devez vous connecter pour publier un commentaire.
Qui l'encodage doit-je utiliser pour lire ĉ,Ĝ,å,ä,ö,ü etc?
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser quel que soit le codage des données d'origine est. Où êtes-vous d'obtenir les données à partir de, et avez-vous des informations à codage il en est? Si vous essayez de le lire avec le mauvais encodage, vous aurez la mauvaise réponse: même si votre encodage peut gérer les caractères, ça va de mal interpréter les données binaires.
Si vous arrivez à choisir l'encodage, puis UTF-8 est un bon pari. Il est mauvais en termes de taille, si vous avez beaucoup de caractères d'extrême-orient, mais bien du contraire. En particulier, ASCII vient encore à un octet par caractère.
Aussi, vous pouvez mettre la culture à lire étrange carachteres comme ç á á etc.
Vous avez besoin d'utiliser le codage approprié, comme toutes les autres réponses mentionnées.
Le problème est de savoir comment découvrir l'encodage. Cela dépend de la source de votre fichier:
<?xml>
instruction de traitement au début du fichier qui spécifie l'encodage. Si il n'existe pas, vous devez supposer que c'est de l'utf-8.Dans tous les cas, vous devriez être en mesure de couvrir environ 90% de tous les fichiers à l'aide de l'UTF8 avec un repli de UTF16. Presque tous les programmes ou les langues dans les cinq dernières années, support de l'Unicode. Toutefois, si vous allez consommer beaucoup de fichiers à partir de la Chine, vous pouvez essayer d'abord UTF16, qui est un peu plus répandue pour l'encodage GB18030.
Codages tous se résument au fait que si vous utilisez les 8 bits d'un caractère, vous ne pouvez traiter 256 caractères distincts. Voyant que le royaume-UNI et de mettre en place les conventions, les 256 caractères ASCII standard sont pour la plupart non accentuées caractères occidentaux.
C'est là UTF8 et UTF16 entrent en jeu. UTF8 est un peu comme l'ASCII - il utilise un octet pour la plupart des caractères occidentaux. Cependant, il existe des octets qui indiquent un personnage de la normale de la plage ASCII - les deux octets qui suivent immédiatement la spéciale d'octets, puis d'indiquer le véritable caractère.
UTF16 (aussi connu comme Unicode) l'indicateur d'octets, et juste utilise 16 bits pour chaque personnage. Comme nous le savons tous, de 16 bits, vous donne 65536 caractères distincts, ce qui n'est pas tout à fait assez pour couvrir tous les mondes de l'écrit, des personnages, mais il a surtout fait le travail.
Donc, pour répondre à votre question: si la plupart de vos personnages sont atones, de l'ouest de caractères UTF8 sera le plus compact de la représentation pour vous (et plus lisibles dans de nombreux éditeurs). Si l'essentiel de vos personnages non-ouest (disons, Chinois), vous voudrez probablement utiliser Unicode (aka UTF16).
Bonne chance!
Encodage.UTF8 ou de Codage.Unicode.
La classe StreamReader a un bool paramètre de son constructeur lui permettre de détection automatique de l'encodage.
Il n'est pas complètement fiable méthode, mais vous pouvez utiliser des heuristiques pour deviner l'encodage.
Rick Strahl a une pratique de l'article sur la détection des codages par la NOMENCLATURE. C'est un peu datée-Système.Texte.L'encodage a maintenant un GetPreamble méthode et StreamReader a une surcharge qui va essayer de détecter l'encodage pour vous.
Unicode => UTF-8/UTF-16 ? 🙂