Sql 是否有默认接受特殊字符(不转换它们)的数据库?

Sql 是否有默认接受特殊字符(不转换它们)的数据库?,sql,database,character-encoding,special-characters,Sql,Database,Character Encoding,Special Characters,我目前正在从头开始选择一个数据库来存储从一组web表单收集的数据。人类将填写这些表格,因为他们很容易使用国际字符,特别是那些名为José和François以及布鲁斯, 我想从一个现代数据库平台开始,它可以接受所有类型(可以说),而不需要转换 问:从一开始,是否就有一个数据库可以接受现代字体中的各种字符?如果是这样,那么不需要转换那么多数据来存储数据的数据库有什么缺点 //期待两个我不想看到的答案: 我找到了很多答案,可以解答人们如何将一个特殊字符(如é或版权符号©转换为数据库合法字符集(如

我目前正在从头开始选择一个数据库来存储从一组web表单收集的数据。人类将填写这些表格,因为他们很容易使用国际字符,特别是那些名为José和François以及布鲁斯, 我想从一个现代数据库平台开始,它可以接受所有类型(可以说),而不需要转换

问:从一开始,是否就有一个数据库可以接受现代字体中的各种字符?如果是这样,那么不需要转换那么多数据来存储数据的数据库有什么缺点

//期待两个我不想看到的答案:

我找到了很多答案,可以解答人们如何将一个特殊字符(如é或版权符号©转换为数据库合法字符集(如
©)(用于©以便数据库可以接受它。这需要一个转换/转换层来将数据往返于数据库。我知道这必须发生在一个级别上,比如字母z可以简化为1和0,但我真正谈论的是找到一个人类可读的数据库,一个不需要翻译的数据库


我还看到一些建议,建议人们将当前数据库中的字符编码改为可以接受更广泛字符的编码。这是一个很好的解决方案,对于那些继承传统系统并希望使其与早期计算机和早期网络所没有预料到的更广泛的字符相关的人来说。我不是从遗留系统开始的。我正在寻找一些现代数据库选项。

是的,有些数据库支持大型字符集。不同的数据库如何实现这一点是不同的。例如:

  • 在MS SQL Server中,您可以使用
    nchar
    nvarchar
    ntext
    数据类型来存储Unicode(UCS-2)文本

  • 在MySQL中,您可以选择UTF-8作为表的编码,以便它能够存储Unicode文本


对于您考虑使用的任何数据库,应查找Unicode支持,以查看是否可以处理大型字符集。

Hy@ Guffa。据我所知,Unicode是一种标准,旨在为大多数字符提供一致的引用集。如果它将©存储为
U+00A9
,则两个支持Unicode的数据库可以轻松地交换
U+00A9
,只有在推到显示界面时才能转换为©或从©转换。我想知道是否有一种数据库方案将©存储为©并将其作为©发送到另一个数据库,这样它就永远不会转换,并且始终是人类可读的?就像XML存储数据一样。(尽管XML确实需要“转义”5个非法字符:&“<>)@Perre:无论您使用的是Unicode还是任何其他字符集,文本总是以数字的形式存储。Unicode是ASCII的超集,因此,例如字符
a
在这两种格式中都存储为
0x41
。无论您选择使用哪种编码,都必须对数据进行解码才能将其作为文本以及用于获取数据的任何接口数据库中的ASCII文本也应该能够获得Unicode文本。我肯定在基本层面上得到了这一点,计算机不会将大写字母
a
存储为
a
。如果计算机是现代的,它可能会将
a
存储为16位Unicode:
0000 0000 0100 0001
。但是在你说的地方有一个ASCII中间层
A
存储为
0x41
。因此,您知道没有现代数据库在保存到中间层时在接口层使用相同的字符,即只将
A
存储为
A
?@Perre:
0x41
01000001
相同,这只是表示数值的不同方式。没有中间层。