0

処理中の Web サイト コンテンツのエンコード/デコードに問題があるようです。Web から XML ファイルを取得していますが、フランス語やドイツ語の文字のように、"e" "r" などの末尾に小さなアポストロフィが付いている場合がありますが、ほとんどのコンテンツは英語です。すべての異なる単語を選択してそれらを処理しようとすると、データベースに重複が保存されることがあります。すべての単語が 1 つのエンコーディング/デコーディングで均一になるように使用する必要があるエンコーディング/デコーディング クラス/ライブラリはありますか? 私の場合、単語は英語ですが、2 つの類似した単語が異なるエンコーディングにあり、エンコーディングが異なる==ため、C# の等価演算子がこれら 2 つと一致していないように見えますか?

言い換えれば"car" == "car"、エンコーディングのために一致しない可能性がありますか? これは可能ですか?どうすれば直せますか?を使用してすべてをデコードする必要がありますか?

更新:コード:以下のコードは、単語が存在するかどうかを確認し、存在する場合はプルし、そうでない場合は新しい単語を挿入します。したがって、データベースに入る単語は常に異なる必要があります。

public static int GetWordID(string word)
{
    string _truncatedword = String.Empty;

    if (word.Length > 48)
    {
        _truncatedword = word.Substring(0, 47).Trim().ToLower();
    }
    else
    {
        _truncatedword = word.Trim().ToLower();
    }

    if (DWords.ContainsKey(_truncatedword))
    {
        return DWords[_truncatedword];
    }
    else
    {
        using (SqlConnection _connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString))
        {
            _connection.Open();

            SqlDataAdapter _adapter = new SqlDataAdapter("select wordid from word where word = @word", _connection);
            _adapter.SelectCommand.Parameters.AddWithValue("@word", _truncatedword);

            DataTable _dtWord = new DataTable();
            _adapter.Fill(_dtWord);

            if (_dtWord.Rows.Count > 0)
            {
                int _wordID = Convert.ToInt32(_dtWord.Rows[0]["wordid"]);

                DWords.Add(_truncatedword, _wordID);

                return _wordID;
            }
            else
            {
                SqlCommand _command = new SqlCommand("insert into word(word) values(@word); select @@identity", _connection);
                _command.Parameters.AddWithValue("@word", _truncatedword);

                int _wordID = Convert.ToInt32(_command.ExecuteScalar());

                DWords.Add(_truncatedword, _wordID);

                return _wordID;
            }
        }
    }
}
4

0 に答える 0