-1

我有一个奇怪的问题。我有一个存储文件的 ASP.NET 应用程序。我有一个表(SQL 2008 R2),我在其中存储用户上传的文件的文件信息。

有时,当我使用特殊字符存储来自国际用户的文件名时,该名称在存储在数据库表中时会被转换:示例原始文件名:Łinename.mov 存储的文件名:Linename.mov

当我检索文件名以构建我的路径/文件字符串时,名称不匹配并且找不到我的文件。

该表将文件名存储为 nvarchar,我认为这将允许 unicode 字符。

有任何想法吗?我宁愿存储原始文件名,而不是重命名服务器上的文件。

编辑:我认为问题在于所讨论的字符不在 UTF-8 字符集中。我通过保持简单来解决这个问题:我支持 UTF-8,如果文件在存储为 UTF-8 时被转换,那就是我的服务器文件名。

4

1 回答 1

1

NVARCHAR确实允许 Unicode,但是您没有说的是如何对数据库进行插入 - 翻译完全有可能不是在 SQL Server 上发生,而是在 ASP.NET 应用程序中发生。

对数据库运行 SQL Profiler 并尝试使用非 ASCII 字符存储文件,并查看实际对数据库执行的操作。如果 Profiler 显示翻译后的名称,则问题出在 ASP.NET 中。否则 SQL Server 会做一些奇怪的事情。

检查此项,然后编辑您的问题以报告结果。

于 2011-11-09T14:09:35.510 回答