-1

奇妙な問題があります。ファイルを保存する ASP.NET アプリがあります。ユーザーがアップロードしたファイルに関するファイル情報を格納するテーブル (SQL 2008 R2) があります。

ときどき、外国のユーザーから特殊文字を含むファイル名を保存すると、データベース テーブルに保存するときに名前が変換されます。 元のファイル名の例: Łinename.mov 保存されるファイル名: Linename.mov

ファイル名を取得してパス/ファイル文字列を作成すると、名前が一致せず、ファイルが見つかりません。

テーブルにはファイル名が nvarchar として格納されており、ユニコード文字が許可されると思いました。

何か案は?サーバー上のファイルの名前を変更せずに、元のファイル名を保存することをお勧めします。

編集: 問題は、問題の文字が UTF-8 文字セットにないことだと思います。私は生活をシンプルにすることでこれを解決しました。私は UTF-8 をサポートしており、ファイルが UTF-8 として保存されたときに変換された場合、それが私のサーバー ファイル名です。

4

1 に答える 1

1

NVARCHARは Unicode を許可しますが、データベースへの挿入方法については言及していません。変換が SQL Server で行われておらず、ASP.NET アプリケーションで行われている可能性は十分にあります。

データベースに対して SQL プロファイラーを実行し、ASCII 以外の文字を含むファイルを保存して、データベースに対して実際に何が実行されているかを確認します。プロファイラーが翻訳された名前を表示する場合、問題は ASP.NET 内にあります。それ以外の場合、SQL Server は奇妙なことをしています。

これを確認してから、質問を編集して結果を報告してください。

于 2011-11-09T14:09:35.510 に答える