Bonjour,
Ma question va sembler "b�te", mais je suis confront� � quelque chose que je ne comprends pas donc je veux m'assurer d'une chose avant tout.
En .Net les cha�nes de caract�res sont en unicode il me semble, quelle que soit l'origine de la donn�e (lecture du contenu d'un fichier, ...). Si je converti ma cha�ne de caract�res en un pointeur (char *) avec la m�thode StringToHGlobalAnsi pour ensuite recr�er une cha�ne de caract�res manag�e
il n'y a aucune "perte" possible au niveau des caract�res et heureusement d'ailleurs, sinon bonjour le bordel. J'ai tout bon ou pas ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 String ^ s1 = "äâàëêéèïîìöôòüûù"; char * c = static_cast<char*>(Marshal::StringToHGlobalAnsi(s1).ToPointer()); String ^ s2 = gcnew String(c, 0, s1->Length, Encoding::Default);
Je pose cette question parce que j'ai une API qui prend en entr�e un char *, j'ai encapsul� l'appel � l'API dans un wrapper C++/CLI appel� par du C# et ce qui est bizarre c'est que suivant l'origine de la cha�ne de caract�res (lecture d'un fichier ou en dur dans le code), l'API ne r�agit pas de la m�me fa�on.
En fait je me fait jeter avec un message d'erreur comme quoi le format de la cha�ne d'entr�e est incorrect dans le cas o� je passe par la lecture d'un fichier (j'utilise File.ReadAllText(chemin, Encoding.UTF8) pour la lecture) et la seule chose qui me vienne � l'esprit c'est un probl�me d'encodage des donn�es.
Si j'ai tout bon, il faudra que je vois du c�t� de l'API.
Partager