在SQL Server数据库中存储丹麦语字母的最佳方式是什么


What is the best way to store Danish letters in a SQL Server database?

我在一个大型网站上使用Linux服务器(PHP)和SQL server数据库。SQL Server数据库使用排序规则SQL_Latin1_General_CP1_CI_AS

我有一个表(让我们称之为table1),它存储了许多通过PHP脚本(script1)从nominatim中选择并存储在表1中的地址。地址的格式似乎是HTML。从table1中选择丹麦语字母(æøå)在网站上看起来不错。

然而,我制作了一个PHP脚本(script2),它选择这些地址并将它们转储到同一MS SQL Server上的另一个表(table2)中(仍然是排序规则SQL_Latin1_General_CP1_CI_AS)。但当从table2中选择丹麦语字母时,这些字母在网站上看起来很奇怪。当script1从nominatim获取地址时,它是JSON格式的,然后进行解码。

$addressdetails = json_decode ( $addressdetails, true );

这里没有进行其他编码或解码。

以下内容也可能有所帮助。当我运行phpinfo()时,我可以看到服务器有以下设置:

PHP version 5.3.3
content type: text/html; charset=UTF-8

在PHP和SQL Server中处理字母的最佳方式是什么,这样丹麦语和其他特殊字母在任何平台上都能以正确的方式显示?

听起来表1的地址数据在NVARCHAR类型的列中,而表2的地址数据则在VARCHAR类型列中。NVARCHAR很乐意处理æøå,但使用SQL_Latin1_General_CP1_CI_AS排序规则的VARCHAR不会。

如果两个表使用NVARCHAR来存储数据,则检查它是否在表1和表2之间的任何点都没有转换为VARCHAR,例如,VARCHAR存储过程参数。