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

标签 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 中处理字母的最佳方式是什么,以便丹麦语和其他特殊字母在任何平台上都能以正确的方式显示?

最佳答案

听起来 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/

相关文章:

sql - 列名称或提供的值的数量与表定义不匹配

sql-server - 是否可以在sql中的同一条语句中读取和分配变量?

php - 使用排序规则对数组进行排序

php - 如何添加 1 个表中多行中的多列以及另一个表中的 1 行?

php - 关联数组到 JSON

sql - 使用 SQL 获取用户排名

sql - 更改SQL Server 2012系统排序规则

mysql - 我是否应该在正在运行的 Drupal 7 站点上将非 utf-8 数据库 (mysql)(默认?)更改为 utf-8?

php - 允许在我网站的 <video> 元素中播放视频,但不允许通过直接链接播放

php - Magento 白屏死机