0

似乎我在处理我正在处理的网站内容时遇到了编码/解码问题。我从网上提取了一个 XML 文件,它可能有法语和德语字符,在“e”“r”等的汤姆上带有小撇号,但大部分内容都是英文的。当我尝试通过选择所有不同的单词来处理它们时,有时会在数据库中保存重复项。是否有任何我应该使用的编码/解码类/库,以便所有单词在一个编码/解码中都是统一的?我认为在我的情况下,即使这些词是英文的,看起来这两个相似的词是不同的编码,而 C# 相等运算符==由于编码不同而与这两个不匹配?

所以换句话说"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