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

时间:2015-02-07 08:56:35

标签: php sql-server collation letters

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

我有一个表(我们称之为table1),它存储了许多通过PHP脚本(script1)从nominatim中选择并存储在table1中的地址。看起来地址的格式是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 个答案:

答案 0 :(得分:1)

听起来像table1在NVARCHAR类型列中有地址数据,而table2在VARCHAR类型列中有地址数据。 NVARCHAR很乐意处理æøå但是VARCHAR与SQL_Latin1_General_CP1_CI_AS整理不会。

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