3

という名前の連絡先がありFrédéricます。

サイトの連絡先リストで検索すると、名前が次のように変更されます。データベースで"Frédéric"このname()を検索するので、名前が含まれています。FrédéricFrédéric

したがって、データベースにはそのような名前はなく、連絡先が見つからないと表示されます。

この名前以外の本名を取得するにはどうすればよいFrédéricですか。

私のデコード方法は

public static string Decode(string text)
        {
            if (text == null)
            {
                return "";
            }

            string result = "";
            string[] values = text.Split('@');
            bool escaped = false;
            try
            {
                for (int i = 0; i < values.Length; i++)
                {
                    if (!escaped)
                    {
                        result += values[i].Replace("_"," ");
                    }
                    else
                    {
                        //result += System.Text.ASCIIEncoding.ASCII.GetChars(new byte[] { byte.Parse(values[i]) })[0];

                    }
                    escaped = !escaped;
                }
            }
            catch { }
            return result;
        }

ここで、メソッドの引数はFrédéricですが、実際にはFrédéricである必要があります。

4

2 に答える 2

9

システムのどこかにバグがあり、UTF-8 でエンコードされた文字列が ANSI コード ページと呼ばれるものを使用してデコードされます。このコードはバグを示しています。

var name = "Frédéric";
var bytes = Encoding.UTF8.GetBytes(name);
var wrongName = Encoding.Default.GetString(bytes);

wrongNameですFrédéric

あなたがする必要があるのはこれです:

var name = "Frédéric";
var bytes = Encoding.UTF8.GetBytes(name);
var correctName = Encoding.UTF8.GetString(bytes);

WindowsのEncoding.Default地域設定によって異なります。私のコンピューターでは、コード ページは ISO 8859:1 としても知られる Windows 1252 ですが、世界の他の地域では別のコード ページである可能性があります。日本語の ANSI コード ページは 932 だと思います。その場合、間違った名前がFrテゥdテゥric.

とにかく、使用する正しいエンコーディングは UTF-8 です。これは、文字列がそのエンコーディングを使用してエンコードされているためです。コードが実行されるシステムの ANSI コード ページに依存するため、マングルされた文字列を "修復" しようとすることは実り多い道ではありません。

于 2012-09-26T08:48:02.363 に答える
0

HtmlEncodeあなたのキャラクターをエンコードするために使用することができます

string encoded = HttpUtility.HtmlEncode("Frédéric");

リンク(特別なキャラクター): http://www.utexas.edu/learn/html/spchar.html

于 2012-09-26T08:45:11.010 に答える