[英]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.