0

ラテン語 (åäö) とラトビア語 (āē) の両方の文字が共存する必要がある .NET サイトで問題が発生しました。データベースでは、フィールドに と を使用nvarcharntextています。テキストをデータベースに直接入力すると、すべて正常に機能します。

問題は、SQL を実行するフォームを使用してまったく同じテキストを入力するとUPDATE、ラトビア語の文字が同様のラテン文字に変換されるため、文字列「åäöāē」が「åäöae」として保存されることです。

別の で少し試してみましたが、CodePagesまだ必要な結​​果が得られていません。誰か提案はありますか?

4

3 に答える 3

4

あなたの SQL ステートメントは値を Unicode 値として db に渡していますか?

例:基本的な例

INSERT YourTable VALUES ('Unicode Value')

次のようにする必要があります。

INSERT YourTable VALUES (N'Unicode Value')

明らかに、パラメーター化された SQL/ストアド プロシージャを使用し、パラメーターを NVARCHAR として定義することをお勧めしますが、私が言っていることはわかります。

于 2009-11-02T15:19:08.570 に答える
1

パイプラインの各部分を個別に取り上げて、何が起こっているのかを理解してください。

Unicode の問題のデバッグに関する私の記事を参照して、問題が発生している場所を診断してください。問題が発生する可能性のある場所:

  • ユーザーからデータを取得する
  • データベースの更新
  • データベースからのフェッチ
  • 取得したデータの表示

これらのそれぞれを個別に確認、特定のフォントなどに依存することはありません。関連する Unicode コード ポイントを出力します (記事に従って)。

ああ、それを指定する場所はどこでも、すべてをエンコードできるエンコーディングを使用してください-UTF-8をお勧めします。

于 2009-11-02T15:16:45.127 に答える
0

Windowsフォームアプリ

Windowsフォームのテキストボックスにテキストを入力するときは、ArialUnicodeMSなどのUnicodeフォントを使用する必要があります。

ウェブページ

応答コードページとしてUTF-8を使用していることを確認してください。まさにこのhttp://support.microsoft.com/kb/893663に関するMicrosoftのすばらしい記事

UTF-8はすべての文字を正しくエンコードします。DB内のNTextとNVarCharはUTF-16データ型であるため、QueryAnalyzerからデータを表示すると正しく表示される場合があることに注意してください。

SQLで

SQLを動的に構築する場合は、必ずNプレフィックスを使用してください。

INSERT INTO TABLE (Name, Number) VALUES (N'MyName', 1)
于 2009-11-02T15:15:30.420 に答える