7

我有一个在 Visual Studio 2013 中为 SSDT 项目构建的 DACPAC 文件。这个 SSDT 项目定义了一个部署后脚本,旨在将一些静态数据合并到已发布的表中,其中一条数据包含版权符号。

现在,当我通过 Visual Studio 发布数据库时,版权符号被保留,并正确合并到目标表中。当我使用 MSDeploy 发布相同的数据库(具有相同的 dacpac 和发布配置文件)时,版权符号将作为“?”合并到目标数据库中。象征。同样,当我使用Action:Script而不是Action:Publish,生成的 SQL 脚本包含一个“?” 而不是版权符号。

似乎 Visual Studio 生成的脚本是 UTF8 编码的,但被烘焙到 dacpac 中的脚本会丢失 UTF8 编码。有没有人对如何解决这个问题有任何想法?

4

2 回答 2

2

我遇到过同样的问题。在记事本中打开此文件,并在同一文件夹中“另存为”UTF-8 编码以替换旧文件。然后再次发布。它应该工作。

记事本截图

于 2016-05-23T14:24:56.300 回答
0

您是否在字符串文字前面加上前缀N以表示它包含 Unicode 字符串?您的列是否定义为ncharor nvarchar?创建 dacpac 的过程可能会根据您的数据被声明为非 unicode 字符串的区别来执行转换。版权字符无法在这种转换中幸存下来也就不足为奇了。

有关 unicode 与字符串的详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms179899.aspx 。

于 2015-08-27T15:16:25.393 回答