我有一个用C#编写的dll。其中一个方法采用参数string txt
。 dll是从经典的asp页面调用的。在调用时,文本包含通过按住 ALT 并在数字键盘上键入130或按住 ALT-GR é >并点击 e 。
DrawString方法输错了。我发现有一个字符集/字体问题,但我不知道如何解决这个问题。
我在英国键盘上获得的内容和使用Arial字体的本地化是一个大写字母A,其上方有一个波浪号,后面跟一个圆圈中的小写字母C.
输入文字的个人可能正在使用任何键盘布局,可能在他们的电脑上有任何本地化,但他们都会通过我们的网页进入。
我需要做些什么来使事物兼容或转换?
代码的相关位是:
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);
答案 0 :(得分:1)
由于您的文字字符串来自网页,因此可以进行网址编码。 首先尝试解码,并确保结果为UTF8:
string strDecoded = HttpUtility.UrlDecode(strEncoded, Encoding.UTF8)
m_graphics.DrawString(strEncoded, fnt, txtBrush, new Point(200, 200), strFormatter);
答案 1 :(得分:0)