1

Windows Embedded CompactEdition6.0デバイスで正しい照合/ロケールを選択する際に問題が発生します。

上記のデバイスで.NETCompactFramework2.0を使用しています。

データベースにŠĐČĆŽšđčćžという文字を挿入するのに問題があります。PlatformNotSupported例外が発生します。

CEデバイスで使用可能なロケールには、クロアチア語または同様のものはリストされていません。データベース/テーブル/列の照合としてSQL_Latin1_General_CP1_CI_ASを選択すると、機能します(デバイスの英語(US)ロケールと組み合わせて使用​​しますが、前の文字を挿入できません。

Windows7デスクトップPCからのManagementstudio2008を使用した同じ照合は、これらすべての文字を正しく受け入れます。

私は何が間違っているのですか?

4

1 に答える 1

2

以前のSQL2000サーバーでこれを複製することはできませんでした。また、SQLExpress2008がSQL2000よりも多言語の問題に対処できることを願っています。

テストとして次のコードを使用しました。

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 に答える