2013-12-12 40 views
0

我有点尴尬地承认,我从来没有真正需要在SQL Server中担心Unicode文本,所以我在这里摸索。sql server中的多种人类语言排序规则

我下载了Geonames Cities1000数据文件并将其加载到SQL Server中,并将所有文本字段都设置为大型nvarchars以避免截断。当我做了我熟悉一个城市(布塞里亚斯,墨西哥)的搜索,我问我的表,并发现它,但它的上市是这样的:

Bucerías 

实际拼写(什么是我导入的文件中,什么是上当你开车进入城市时),是这样的:

Bucerías 

我需要用不同的排序方式重新制作我的表吗?我正在处理来自世界各地的城市名称,所以我在这里对如何为此设置排序规则感到不知所措,或者如果这甚至是我的问题。

总之,我想布塞里亚斯显示为布塞里亚斯和مورای,یوتا,穆雷显示为مورای,یوتا,穆雷等

+1

不信任视觉检查。检查字节。 –

+0

如果使用NVARCHAR,则存储不受排序规则的影响。读取源文件时,最有可能不使用正确的编码。 – devio

+0

@devio我用“unicode string”去设置大小为4000.有什么东西可以保留它更多吗? – radpin

回答

0

什么最终帮助被采摘65001(UTF-8 )代码页。当我检查Unicode框时,它会导致解析器错过删除控制字符,因此未选中。

  1. 确保将输出列设置为Unicode文本。
  2. 确保代码页设置为65001
  3. 确保(SQL表的)目标列类型为nvarchar。

现在我的SQL查询重新执行Bucerías!

Here's a picture of what helped