- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
究竟如何无缝支持存储在 postgres 的 utf8
字符集中的所有语言?我们似乎需要指定一个特定于语言的排序规则以及字符集,例如 en_US.utf8
。如果我没记错的话,我们无法在同一个 utf8
中同时存储英文 (en_US
) 和中文 (zh_CN
) > 列,同时保持任何有意义的整理行为。如果我将一个列定义为en_US.utf8
,它应该如何处理包含中文(zh_CN
)字符/字节序列的值?实际情况是单个列值可以包含多种语言(例如:“你好和晚安”),根本无法根据一种语言进行整理。
是的,我可以物理存储任何字符序列;但是在包含英文、德文、中文、日文和韩文字符串的 en_US.utf8
列上进行排序的定义行为是什么?
我知道 mysql 的 utf8mb4_unicode_ci
整理并不完美,并且它没有遵循任何关于如何整理整个 unicode 集的既定标准。我已经能听到反对 mysql 的人群在叹息 mysql 的语言不可知排序规则是多么武断、语义上毫无意义,甚至完全无效。但事实是,它工作得很好,并且满足了 utf8
= 多语言 unicode 支持的期望。
难道 postgres 只是非常固执地认为在 unicode 范围内进行整理在语义上是不正确的吗?我知道开发人员在“按照规范做事”方面非常严格,但这种无法兼顾多种语言的能力至少可以说是令人沮丧的。我是否遗漏了解决多语言问题的东西,或者官方的立场是单个 utf8
列可以处理任何语言,但一次只能处理一种语言?
最佳答案
你是对的,永远不会有一种完美的方法来跨语言整理字符串。
PostgreSQL 决定不创建自己的排序规则,而是使用操作系统提供的排序规则。这背后的想法是避免重新发明轮子并减少维护工作。
因此,传统的 PostgreSQL 对您的问题的回答是:如果您想要一种对不同语言的字符串都能很好地工作的字符串排序规则,请向您的操作系统供应商投诉或选择提供此类排序规则的操作系统。
但是,这种方法有 PostgreSQL 社区意识到的缺点:
很少有人(如果有的话)根据操作系统提供的整理支持来决定操作系统。
PostgreSQL 的排序行为取决于底层操作系统,这导致邮件列表上的困惑用户频繁提问。
对于某些操作系统,排序规则行为可能会在操作系统升级期间发生变化,从而导致数据库索引损坏(参见示例 this thread)。
很可能 PostgreSQL 改变了它的方法;曾多次努力使用ICU库而不是操作系统排序规则(例如参见 this recent thread ),这将缓解其中的一些问题。
关于postgresql - postgresql 中使用 utf8 的多种语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39461851/
至少在某些 ML 系列语言中,您可以定义可以执行模式匹配的记录,例如http://learnyouahaskell.com/making-our-own-types-and-typeclasses -
这可能是其他人已经看到的一个问题,但我正在尝试寻找一种专为(或支持)并发编程而设计的语言,该语言可以在 .net 平台上运行。 我一直在 erlang 中进行辅助开发,以了解该语言,并且喜欢建立一个稳
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
我正在寻找一种进程间通信工具,可以在相同或不同系统上运行的语言和/或环境之间使用。例如,它应该允许在 Java、C# 和/或 C++ 组件之间发送信号,并且还应该支持某种排队机制。唯一明显与环境和语言
我有一些以不同语言返回的文本。现在,客户端返回的文本格式为(en-us,又名美国英语): Stuff here to keep. -- Delete Here -- all of this below
问题:我希望在 R 中找到类似 findInterval 的函数,它为输入提供一个标量和一个表示区间起点的向量,并返回标量落入的区间的索引。例如在 R 中: findInterval(x = 2.6,
我是安卓新手。我正在尝试进行简单的登录 Activity ,但当我单击“登录”按钮时出现运行时错误。我认为我没有正确获取数据。我已经检查过,SQLite 中有一个与该 PK 相对应的数据。 日志猫。
大家好,感谢您帮助我。 我用 C# 制作了这个计算器,但遇到了一个问题。 当我添加像 5+5+5 这样的东西时,它给了我正确的结果,但是当我想减去两个以上的数字并且还想除或乘以两个以上的数字时,我没有
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 4 年前。 Improve th
这就是我所拥有的 #include #include void print(int a[], int size); void sort (int a[], int size); v
你好,我正在寻找我哪里做错了? #include #include int main(int argc, char *argv[]) { int account_on_the_ban
嘿,当我开始向数组输入数据时,我的代码崩溃了。该程序应该将数字读入数组,然后将新数字插入数组中,最后按升序排列所有内容。我不确定它出了什么问题。有人有建议吗? 这是我的代码 #include #in
我已经盯着这个问题好几个星期了,但我一无所获!它不起作用,我知道那么多,但我不知道为什么或出了什么问题。我确实知道开发人员针对我突出显示的行吐出了“错误:预期表达式”,但这实际上只是冰山一角。如果有人
我正在编写一个点对点聊天程序。在此程序中,客户端和服务器功能写入一个唯一的文件中。首先我想问一下我程序中的机制是否正确? I fork() two processes, one for client
基本上我需要找到一种方法来发现段落是否以句点 (.) 结束。 此时我已经可以计算给定文本的段落数,但我没有想出任何东西来检查它是否在句点内结束。 任何帮助都会帮助我,谢谢 char ch; FI
我的函数 save_words 接收 Armazena 和大小。 Armazena 是一个包含段落的动态数组,size 是数组的大小。在这个函数中,我想将单词放入其他称为单词的动态数组中。当我运行它时
我有一个结构 struct Human { char *name; struct location *location; int
我正在尝试缩进以下代码的字符串输出,但由于某种原因,我的变量不断从文件中提取,并且具有不同长度的噪声或空间(我不确定)。 这是我的代码: #include #include int main (v
我想让用户选择一个选项。所以我声明了一个名为 Choice 的变量,我希望它输入一个只能是 'M' 的 char 、'C'、'O' 或 'P'。 这是我的代码: char Choice; printf
我正在寻找一种解决方案,将定义和变量的值连接到数组中。我已经尝试过像这样使用 memcpy 但它不起作用: #define ADDRESS {0x00, 0x00, 0x00, 0x00, 0x0
我是一名优秀的程序员,十分优秀!