Déterminer une chaîne de codage en C#

Est-il possible de déterminer une chaîne de codage en C#?

Dire, j'ai un nom de fichier de la chaîne, mais je ne sais pas si c'est codé en Unicode UTF-16 ou le système de codage par défaut, comment puis-je savoir?

  • Vous ne pouvez pas "coder" en Unicode. Et il n'y a aucun moyen de déterminer automatiquement l'encodage d'une Chaîne de caractères, sans aucune autre information préalable.
  • "Vous ne pouvez pas "coder' en Unicode" - si l'on interprète Unicode UTF-16 (ou tout autre UTF*), alors que c'est un bon moyen de l'écriture de code-points comme une séquence d'octets (=encodage).
  • comment pouvez-vous écrire de telles approximations? UTF-16 est l'un des moyens possibles pour coder des données Unicode. Vous ne pouvez pas "Unicode-encoder"; Unicode n'est pas de l'UTF-; et UTF - n'est pas Unicode. Désolé, mais si nous continuer à écrire de telles approximations, comment Unicode liées à des comportements de changer? Les débutants pourront toujours se confondre par la sombre Unicode monstre et les choses ne changeront jamais. Soyons précis.
  • pour être plus clair peut-être: de l'encodage Unicode code-points dans les chaînes d'octets d'un jeu de caractères à l'aide d'un "codage" scheme (utf-, iso-, big5, shift-jis, etc...), et vous décoder les chaînes d'octets à partir d'un jeu de caractères Unicode. Vous n'avez pas coder bytestrings en Unicode. Vous n'avez pas de décoder l'Unicode dans bytestrings.
  • Grâce NicDumZ, vous avez juste fait me sentir vraiment stupide. :S
  • le codage lui-même (en particulier UTF-16) est aussi communément appelé "Unicode". Bon ou mauvais, c'est la vie. Même dans .NET, regarder l'Encodage.Unicode - sens de l'UTF-16.
  • eh bien, je ne le savais pas .NET est donc trompeuse. Qui ressemble à une terrible habitude d'apprendre. Et désolé @krebstar, ce n'était pas mon intention (je pense toujours que votre édité question fait beaucoup plus de sens aujourd'hui qu'avant)
  • Il existe un moyen de déterminer de manière probabiliste dont l'encodage à utiliser. Regardez ce que fait IE (et maintenant aussi les FF avec Vue - Encodage des Caractères - Auto-détection) pour qui: il tente un encodage et de voir si il est peut-être "bien écrit <de mettre un nom de langue ici>", ou modifier et essaie de nouveau. Allez, comme ça peut être amusant!
  • toute solution finale avec l'intégralité du code source de l'échantillon de travail à ce sujet ?
  • Cette question n'a pas de sens comme l'a écrit. Dans .Net, une fois que vous avez un objet de type string, ses caractères sont les caractères Unicode dans la plage U+0000 à U+FFFF. Il n'est plus "a un encodage", dans le sens de la question. Ou sinon, vous pourriez dire que .Net de la chaîne de l'encodage est UTF-16. Tout "codage" est traité par n'importe quel code converti à l'origine bytestream dans le .Net objet de type string.

InformationsquelleAutor krebstar | 2009-06-22