2010-08-17 23 views
2

J'essaye d'écrire du texte arbitraire à un contrôle personnalisé.
Mon code fonctionne, mais lorsque j'essaie de dessiner des caractères tels que ü, il affiche un carré vide où le caractère serait.
J'ai besoin que cela fonctionne car j'ai l'intention de soutenir les localisations.
J'ai déjà vérifié, et Tahoma a les caractères requis. Mon code est ci-dessous:C# Graphics.DrawString ne rend pas les caractères spéciaux?

string _Label = "Zurück"; 
Font labelFont = new Font("Tahoma", 9, FontStyle.Bold); 
SizeF labelSize = e.Graphics.MeasureString(_Label, labelFont); 
this.Width = (int)(labelSize.Width + this.Padding.Horizontal); 
e.Graphics.DrawString(_Label, labelFont, Brushes.White, new PointF(this.Padding.Left, this.Padding.Top)); 

Quelqu'un sait-il comment résoudre ce problème?

Répondre

2

Vous verrez un rectangle si la police que vous utilisez ne contient pas la glyphe Vous savez que ce n'est pas le cas, Tahoma a définitivement le ü. Ce qui signifie que le vrai problème est que vous n'avez pas réalisé le fichier correctement.

Vous aurez besoin de savoir comment le texte du fichier est codé. Vous savez que ce n'est pas UTF8, c'est la valeur par défaut pour StreamReader. Votre prochaine supposition devrait probablement être:

 var sr = new StreamReader(path, Encoding.Default); 
     // Read file... 
+0

Ici, avoir un cookie! Cela a fonctionné.Intéressant, la valeur entière du char était 0xFF01 plus élevé qu'il aurait dû l'être quand je n'ai pas spécifié un encodage. – Origamiguy

0

Misesure la police prend en charge le caractère (utiliser charmap ou quelque chose) et utiliser unicode.

Ex: \ u00FC doit être le caractère que vous cherchez

lecture dans des fichiers au format Unicode:

StreamReader UnicodeFileRead new StreamReader(input, System.Text.Encoding.Unicode); 
+0

Merci, cela fonctionne lorsque codé en dur! Cependant, je charge mes chaînes à partir d'un fichier externe, et ne peux pas échapper comme ça. – Origamiguy

+0

Edited réponse, pas trop sûr si la lecture en tant qu'unicode fonctionnera, mais il devrait. – Blam

+0

Non, n'a pas fonctionné. Ne t'en fais pas, fixe-le maintenant de toute façon. Encoding.Default fonctionne (: – Origamiguy