我有一个数据库,它需要以各种语言和字母保存数据。我使用默认的拉丁语排序规则,但所有文本字段都是 Unicode 种类(nchar、nvarchar)。
我可以使用我的前端应用程序愉快地从数据库中插入和检索 Unicode 数据,但是如果我使用 SSMS 查看数据,那么我看到的只是乱码!
我可以插入这个:
극단적으로
然后在 SSMS 中看起来像这样:
극단ì 으로
但是由我的前端应用程序检索为:
극단적으로
现在显然数据本身存储正常,但为什么 SSMS 将其显示为乱码?有趣的是,如果我使用 SSMS 直接编辑数据并将其粘贴在上面,然后将其显示为这样(编辑:结果将结果从网格切换到文本会减轻我的这部分问题,因为显示的是正确的文本而不是框.):
□□□□□
但是,如果我将其复制并粘贴到文本编辑器中,它会显示为:
극단적으로
为了查看这是否只是 SSMS 行为不端(/我配置错误),我使用了 MS Access 并将其链接到我的 SQL Server 数据库,但它显示的乱码与 SQL Server 相同。
该数据库将保存 Web 应用程序的所有静态文本,因此能够轻松查看和编辑数据对我来说很重要,当您看到的只有以下内容时不容易做到:
극단ì 으로
任何建议都会很棒,我真的坚持这一点。
编辑
这是我目前在 PHP 中完成的数据插入示例:
$con = sqlsrv_connect("(local)", array("Database" => "myDatabase"));
$SQL = "INSERT INTO TableName (col1,col2) VALUES (N'극단적으로',N'극단적으로')";
sqlsrv_query($con,$SQL);
这是我的数据检索示例:
$SQL = "SELECT col1,col2 FROM TableName";
$rs = sqlsrv_query($con,$SQL);
while($row = sqlsrv_fetch_array($rs)){
echo $row["col1"]." ".$row["col2"]."\n";
}
这导致 PHP 输出:
극단적으로 극단적으로
但是,如果我在该表上运行选择,则数据在 SSMS 的输出窗口中显示为乱码。