C#Graphics.DrawString不呈现特殊字符?

时间:2010-08-17 22:57:04

标签: c# graphics special-characters drawstring

我正在尝试将一些任意文本写入自定义控件。
我的代码可以工作,但是当我尝试绘制诸如ü之类的字符时,它会显示一个字符所在的空方块。
我需要这个工作,因为我打算支持本地化。
我已经检查过了,Tahoma有所需的字符。我的代码如下:

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

任何人都知道如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果您使用的字体不包含字形,您将看到一个矩形。你知道情况并非如此,Tahoma肯定有ü。这意味着真正的问题是你没有正确地实现文件。

您需要了解文件中的文本是如何编码的。你知道它不是UTF8,这是StreamReader的默认值。你的下一个猜测可能应该是:

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

答案 1 :(得分:0)

确保字体支持字符(使用charmap或其他东西)并使用unicode。

Ex:\ u00FC应该是您正在寻找的角色

以Unicode格式读取文件:

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