0

私はC#で書かれたdllを持っています。メソッドの1つはパラメーターを取りますstring txt。dllは、従来のaspページから呼び出されています。呼び出し時に、テキストには、テンキーで130を押したまま入力するか、を押したままé押したときに得られる文字が含まれています。ALTALT-GRe

DrawStringメソッドはそれを間違って出力しています文字セット/フォントの問題があることはわかっていますが、問題を回避する方法がわかりません。

英国のキーボードとArialフォントを使用したローカリゼーションで得られるのは、大文字のAで、その上にチルダがあり、その後に小文字のcが付いています。

テキストを入力する個人は、任意のキーボードレイアウトを使用している可能性があり、PCでローカライズされている可能性がありますが、すべてのユーザーがWebページから入力します。

互換性を持たせたり、変換したりするにはどうすればよいですか?

関連するコードは次のとおりです。

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

2 に答える 2

1

テキストの文字列はWebページからのものであるため、URLエンコードされている可能性があります。最初にデコードしてみて、結果がUTF8であることを確認してください。

string strDecoded = HttpUtility.UrlDecode(strEncoded, Encoding.UTF8)

m_graphics.DrawString(strEncoded, fnt, txtBrush, new Point(200, 200), strFormatter);
于 2013-01-07T13:59:00.683 に答える
0

éUnicodeのようにエンコードされるためU+00E9、UTF-8になり0xC3 0xA9ます。

U+00C3Ã、であり、U+00A9©ソース)です。

したがって、明らかにエンコーディングの問題があり、関連するコードは投稿したコードではなく、Webリクエストから文字列を受け取り、それをページ(コードビハインド?)を介してDLLに渡すコードです。

于 2013-01-07T11:26:56.103 に答える