11
votes

Comment convertir une chaîne en UTF8?

J'ai une chaîne qui contient un peu unicode, comment puis-je la convertir en codage UTF-8?


1 commentaires

Je pense que cela vous aide. Stackoverflow.com/Questtions/497782/...


4 Réponses :


22
votes

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);


3 commentaires

Pourquoi pas simplement utiliser encoding.utf8.getbytes plutôt que nouveau 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.



1
votes

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());


0 commentaires

3
votes

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;
}


1 commentaires

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



2
votes

Ceci devrait être avec le code minimum:

byte[] bytes = Encoding.Default.GetBytes(myString);
myString = Encoding.UTF8.GetString(bytes);


0 commentaires