[英]Characters changing in Graphics.DrawString
我有一个用C#编写的dll。 其中一种方法采用参数string txt
。 该dll是从经典的ASP页面中调用的。 在呼叫时,文本包含字符é
,可通过按住ALT并在数字键盘上键入130或按住ALT-GR并按e来获得 。
DrawString方法输出错误。 我意识到存在字符集/字体问题,但是我不知道如何解决该问题。
我在英式键盘上使用Arial字体进行的本地化是大写字母A,上方带有波浪号,后跟一个小写的c。
输入文本的个人可以使用任何键盘布局,可以在PC上进行任何本地化,但是他们都将通过我们的网页进行输入。
我需要做些什么来使事情兼容或转换?
相关的代码位是:
Bitmap image = new Bitmap(strFilePath);
Graphics m_graphics;
m_graphics = Graphics.FromImage(image);
Font fnt = new Font("Arial", 12.0f);
StringFormat strFormatter = new StringFormat();
SolidBrush txtBrush = new SolidBrush(Color.FromArgb(127, Color.FromArgb(int.Parse("AB12CD", NumberStyles.HexNumber))));
m_graphics.DrawString("é", fnt, txtBrush, new Point(200, 200), strFormatter);
由于您的文本字符串来自网页,因此可能是经过URL编码的。 尝试先对其进行解码,并确保结果为UTF8:
string strDecoded = HttpUtility.UrlDecode(strEncoded, Encoding.UTF8)
m_graphics.DrawString(strEncoded, fnt, txtBrush, new Point(200, 200), strFormatter);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.