gpt4 book ai didi

sql-server - 新的 SQL Server 数据库使用哪个字符集?

转载 作者:行者123 更新时间:2023-12-05 02:24:30 26 4
gpt4 key购买 nike

我正在准备一个新的数据库服务器,我将从一个现有的大型多语言数据库中迁移数据(主要是英语/法语/西类牙语文本,很少有来自其他语言的特殊字符,例如城市名称)。它将主要用于我和我的同事开发的 PHP 应用程序。

我很难理解所有的字符集问题,我想从一开始就做出正确的选择。

根据我的阅读,为了支持所有 Unicode 字符,我应该使用 UTF-8。

我的问题:

  1. 我应该在 MicroSoft SQL Server 2008 中设置哪些字符集/排序规则以获得 UTF-8? Latin1_general_CS_AS 是正确的选择吗?

  2. 我应该在我的 HTML 页面中使用这个元数据吗?

    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
  3. 是否会有我的数据库无法支持的字符,或者我需要以某种方式进行转换的字符?

最佳答案

字符集和排序规则是不同的东西。

SQL Server 不支持 UTF-8。您应将数据存储为 Unicode,这意味着列类型应为 NCHARNVARCHAR。您可以选择您喜欢的任何排序规则,因为您选择的任何排序规则都是不正确的。归类决定了值排序比较的方式,而不是它们存储时使用的编码(驱动程序将归类信息解释为非 Unicode 类型的编码提示,但这是一个不同的主题)。当您混合使用各种语言时,可能没有正确的排序顺序(即您的应用程序受到臭名昭著的土耳其语 I 和西类牙语 ch 的困扰排序问题)。然而,这通常不是什么大问题,用户很少注意到它。不过总的来说,拉丁排序可能是最好的。

至于你返回的 HTTP 字符集:你应该把你用来返回页面的字符集作为。 SQL Server 使用什么编码来存储数据是完全无关的。许多开发人员在这里遇到问题,因为他们在 SQL Server 中使用非 Unicode 数据类型(即 CHARVARCHAR),这导致返回的许多编码不兼容HTTP 数据。只要您不在自己的应用程序代码中做任何愚蠢的事情(例如尝试强制编码),只需使用 Unicode 列类型即可解决大多数问题。

顺便说一句,由于您提到大多数应用程序都是 PHP,因此您可能需要将编码从 SQL Server Unicode UCS-2 转换为所需的输出格式 (UTF-8)。请务必阅读 Microsoft Drivers for PHP for SQL Server Unicode Support and Endianness并对 SQL Server 数据使用 ucs-2le 编码。

关于sql-server - 新的 SQL Server 数据库使用哪个字符集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12670425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com