Comment coder et décoder Cassé Chinois/caractères Unicode?
J'ai essayé de googler autour, mais n'était pas en mesure de trouver ce jeu de caractères que le texte ci-dessous appartient à:
å...·æœ‰éœé›»ç”¢ç”Ÿè£ç½®séjour de 1 euro‹å½±åƒè¼å...¥è£ç½®
Mais de mettre <meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
et de garder cette chaîne dans un fichier HTML, j'ai été en mesure d'afficher les caractères Chinois correctement:
具有靜電產生裝置之影像輸入裝置
Donc ma question est:
- Quels outils puis-je utiliser pour détecter le jeu de caractères de ce texte?
- Et comment puis-je convertir/encoder/décoder correctement en C#?
Mises à jour:
Pour l'achèvement de souci, j'ai mis à jour ce test.
[TestMethod]
public void TestMethod1()
{
string encodedText = "具有éœé›»ç”¢ç”Ÿè£ç½®ä¹‹å½±åƒè¼¸å…¥è£ç½®";
Encoding utf8 = new UTF8Encoding();
Encoding window1252 = Encoding.GetEncoding("Windows-1252");
byte[] postBytes = window1252.GetBytes(encodedText);
string decodedText = utf8.GetString(postBytes);
string actualText = "具有靜電產生裝置之影像輸入裝置";
Assert.AreEqual(actualText, decodedText);
}
}
Grâce.
Double Possible: stackoverflow.com/questions/90838/....
Vous devriez jeter un oeil à cet excellent article: Le Minimum Absolu que Tout Développeur Doit Absolument, Positivement Savoir Sur Unicode et les Jeux de Caractères (Pas d'Excuses!) joelonsoftware.com/articles/Unicode.html
Si vous êtes seulement donné un flux d'octets, vous ne pouvez pas détecter qu'il représente texte dans certains encodage. Vous devez être dit par celui qui vous a donné les octets. Vérifiez la documentation, les manuels et les spécifications de protocole de vos sources de données.
je le sais et j'ai relu le document, mais si c'est le cas, pourquoi ne l'est pour le navigateur les caractères afficher correctement lors de l'encodage de caractères est définie à l'UTF-8? Quelle compréhension de base qui me manque ici?
Vous devriez jeter un oeil à cet excellent article: Le Minimum Absolu que Tout Développeur Doit Absolument, Positivement Savoir Sur Unicode et les Jeux de Caractères (Pas d'Excuses!) joelonsoftware.com/articles/Unicode.html
Si vous êtes seulement donné un flux d'octets, vous ne pouvez pas détecter qu'il représente texte dans certains encodage. Vous devez être dit par celui qui vous a donné les octets. Vérifiez la documentation, les manuels et les spécifications de protocole de vos sources de données.
je le sais et j'ai relu le document, mais si c'est le cas, pourquoi ne l'est pour le navigateur les caractères afficher correctement lors de l'encodage de caractères est définie à l'UTF-8? Quelle compréhension de base qui me manque ici?
OriginalL'auteur melaos | 2012-06-10
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe lorsque vous enregistrez le "mauvais" chaîne de caractères dans un fichier texte avec une balise meta de déclarer l'encodage correct, c'est que votre éditeur de texte est d'enregistrer le fichier avec Windows-1252 encodage, mais le navigateur est la lecture du fichier et de les interpréter en tant que UTF-8. Depuis le "mauvais" de la chaîne est mal décodé octets UTF-8 avec le Windows-1252 encodage, vous êtes en inversant le processus d'encodage du fichier sous Windows-1252 et de décodage en UTF-8.
Voici un exemple:
Même avec un bon décodage, vous aurez toujours besoin d'une police qui prend en charge les caractères affichés. Si votre police par défaut ne prend pas en charge le Chinois, vous pourriez ne pas voir les caractères corrects.
La bonne chose à faire est de comprendre pourquoi la chaîne que vous avez été décodé en Windows-1252, en premier lieu. Parfois, cependant, les données dans une base de données est stockée de manière incorrecte pour commencer avec, et vous devez recourir à ces jeux à résoudre le problème.
OriginalL'auteur Mark Tolonen
OriginalL'auteur mesutpiskin
Je ne suis pas vraiment sûr de ce que tu veux dire, mais je devine que vous souhaitez convertir une chaîne de caractères dans un certain codage en tableau d'octets en forme et d'une chaîne. Supposons le codage des caractères est appelé "FooBar":
C'est une façon de coder et de décoder:
Vous pouvez en apprendre plus sur le Codage de la classe de plus à MSDN.
Où en êtes-vous de la chaîne d'entrée? À partir d'un fichier, la saisie de l'utilisateur, ...?
tirer à partir d'un tableau de données de la colonne via linq to entities.
OriginalL'auteur lesderid
De répondre à votre question à la fin de votre post:
Si vous voulez déterminer l'encodage du texte de l'exécution, vous devriez regarder que: http://code.google.com/p/ude/
pour la conversion de jeux de caractères que vous pouvez utiliser http://msdn.microsoft.com/en-us/library/system.text.encoding.convert(v=vs. 100).aspx
OriginalL'auteur eyossi
C'est Windows Latin 1. J'ai collé le texte Chinois en tant que UTF-8 dans BBEDIT (un éditeur de texte pour Mac) et le ré-ouvrir le fichier que Windows Latin 1 et bang, l'exacte des signes diacritiques est apparu.
OriginalL'auteur dda