5

问题: 在 MySQL、PHP 或 Linux 和 Windows 操作系统上进行排序时,我在哪里可以找到字符的优先级?

例如,每个人都知道在 MySQL 中对字符串执行升序排序时ab之前。但是其他角色呢?美元符号$是否在星号*之前?感叹号前面有空格吗?ETC...

什么决定了排序顺序?它是否使用底层 ascii / UTF-8 值?不同的技术有区别吗?

需要考虑的技术:

  1. 数据库 - MySQL / SQL / SQLite / Oracle / 等
  2. 编程语言(用于字符串排序功能) - PHP / Javascript / ASP.NET / Visual C# / Python / Ruby / Objective C
  3. 操作系统(即按文件名排序文件)- Windows / Linux / MacOS / iOS / Android
4

4 回答 4

1

字符表示为从无符号整数类型到特定字形的映射。特定映射由字符集定义。

因此,当您比较字符时,您实际上是在比较表示特定字符​​集中字符的整数。

例如,JavaString根据它们的 unicode 表示来比较 s。来源

于 2012-06-07T22:27:58.940 回答
1

在数据库术语中,这称为排序规则,大多数字符集都有一个默认值。如果您使用的是 unicode,您可能会在这里查看:http ://www.unicode.org/reports/tr10/tr10-24.html

于 2012-06-07T22:28:57.877 回答
1

当考虑其他语言时,它变得更加有趣。

Ä 和 ö 是在荷兰语和德语中带有重音符号的字母,但在瑞典字母表中是“真正的”字母(在 Z 之后,分别不在 A 和 B/O 和 L 之间)。

于 2012-06-07T22:29:43.290 回答
1
  1. 数据库 - 排序规则,如果没有设置排序规则,则整数字符值
  2. 编程语言 - 语言环境或整数字符值或用户定义的函数(通常默认情况下所有 3 个选项都可用)
  3. 操作系统 - 语言环境
于 2012-06-07T22:36:35.390 回答