我在一个使用 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 中处理字母的最佳方式是什么,以便丹麦语和其他特殊字母在任何平台上都能以正确的方式显示?
最佳答案
听起来 table1 的地址数据在 NVARCHAR 中类型化列,而 table2 的地址数据位于 VARCHAR 中。键入的列。 NVARCHAR 会很乐意处理 æøå,但带有 SQL_Latin1_General_CP1_CI_AS 排序规则的 VARCHAR 则不会。
如果两个表都使用 NVARCHAR 来存储数据,则检查表 1 和表 2 之间的任何点是否未将数据转换为 VARCHAR,例如 VARCHAR 存储过程参数。
关于php - 在 SQL Server 数据库中存储丹麦语字母的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28380279/