1

我在 Windows Embedded Compact Edition 6.0 设备上选择正确的排序规则/语言环境时遇到问题。

我在所述设备上使用 .NET compact framework 2.0。

我在数据库中插入字母 ŠĐČĆŽšđčćž 时遇到困难。我收到 PlatformNotSupported 异常。

CE 设备上的可用区域设置未列出克罗地亚语或类似的任何内容。当我选择 SQL_Latin1_General_CP1_CI_AS 作为数据库/表/列排序规则时,它可以工作(结合设备上的英语(美国)区域设置,但我无法插入以前的字母。

使用 Management Studio 2008 的 Windows 7 台式 PC 的相同排序规则正确地接受所有这些字母。

我究竟做错了什么?

4

1 回答 1

2

我无法在我们较旧的 SQL 2000 Server 上复制它,我当然希望 SQL Express 2008 在处理多语言问题方面比 SQL 2000 有更多的功能。

我使用以下代码作为测试:

private const string jp2code = "jp2code.net";

private void Form1_Activated(object sender, EventArgs e) {
  string croatianIn = "ŠĐČĆŽšđčćž";
  string croatianOut = TestCroatian(croatianIn);
  Console.WriteLine(String.Compare(croatianIn, croatianOut));
}

private string TestCroatian(string input) {
  string result = null;
  string sql = "INSERT INTO SUITEMSG (MsgFrom, [Message]) VALUES (@MsgFrom, @Message);";
  using (SqlCommand cmd = new SqlCommand(sql, Data.Connection)) {
    cmd.Parameters.Add("@MsgFrom", jp2code);
    cmd.Parameters.Add("@Message", input);
    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
  }
  sql = "SELECT [Message] FROM SUITEMSG WHERE MsgFrom=@MsgFrom;";
  using (SqlCommand cmd = new SqlCommand(sql, Data.Connection)) {
    cmd.Parameters.Add("@MsgFrom", jp2code);
    cmd.Connection.Open();
    result = cmd.ExecuteScalar().ToString();
  }
  return result;
}

输入和输出都是相同的。

你确定你没有做其他事情吗?

您能否更新您的问题以发布一个简短的代码示例,就像我在上面所做的那样来显示什么不起作用?

于 2012-08-21T21:20:31.473 回答