J'ai une chaîne qui contient un peu unicode, comment puis-je la convertir en codage UTF-8? P>
4 Réponses :
Cet extrait permet une gamme d'octets avec votre chaîne codée dans UTF-8:
UTF8Encoding utf8 = new UTF8Encoding(); string unicodeString = "Quick brown fox"; byte[] encodedBytes = utf8.GetBytes(unicodeString);
Pourquoi pas simplement utiliser encoding.utf8.getbytes code> plutôt que
nouveau code> ing à un autre encodeur?
@ Jessec.slicer Cet extrait est de l'une des Exemples de Microsoft pour le Classe UTF8Encoding . Je ne suis pas certainement certain de savoir pourquoi ils choisissent de le faire de cette façon, mais je suppose que c'est pour la sécurité du fil (ils mentionnent que les membres d'instance ne sont pas garantis pour être en sécurité, mais cela n'est que ma supposition).
@Cas je n'ai aucune idée, veuillez poser une question distincte.
Essayez de ce code
string unicodeString = "Quick brown fox"; var bytes = new List<byte>(unicodeString); foreach (var c in unicodeString) bytes.Add((byte)c); var retValue = Encoding.UTF8.GetString(bytes.ToArray());
Essayez cette fonction, cela devrait le réparer en dehors de la case. Vous devrez peut-être résoudre les conventions de nommage.
private string UnicodeToUTF8(string strFrom) { byte[] bytSrc; byte[] bytDestination; string strTo = String.Empty; bytSrc = Encoding.Unicode.GetBytes(strFrom); bytDestination = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, bytSrc); strTo = Encoding.ASCII.GetString(bytDestination); return strTo; }
Utilisez ceci pour faire vos chaînes 1. XML compatible avant d'économiser sur la base de données, 2. (ou) CSV compatible avant d'exporter vers la CSV
Ceci devrait être avec le code minimum:
byte[] bytes = Encoding.Default.GetBytes(myString); myString = Encoding.UTF8.GetString(bytes);
Je pense que cela vous aide. Stackoverflow.com/Questtions/497782/...