ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL-对于所有世界语言,我必须使用utf8_general_ci或utf8_unicode_ci或其他任何排序规则?

2019-11-19 01:26:11  阅读:317  来源: 互联网

标签:unicode utf-8 collation mysql


我们开发android应用.该应用程序接受来自用户的文本并上传到服务器(mysql).然后,其他用户将阅读此文本.

在测试时,我发现“ Hindi”(印度)语言在列中插入为“ ?????”. ‘.然后,在SO搜索之后,我将排序规则更改为utf8_general_ci.

我是整理新手.我想让用户以世界上任何一种语言输入文本,而其他人则可以访问.我该怎么办.准确性是必须的.

但是我看到一条评论,其中有人说:“永远不要使用utf8_general_ci.这根本行不通.这回溯到50年前的ASCII信息存储糟糕的过去.没有Unicode区分大小写的匹配就离不开例如,“Σίσυφος”中包含三个不同的sigma;或者“TSCHüẞ”的小写字母是“tschüβ”,而“tschüβ”的大写字母是“TSCHÜSS”.否则您可能会很快.因此,您必须使用utf8_unicode_ci,因为如果您不关心正确性,那么使其无限快速变得微不足道.”

解决方法:

您的问题标题是有关归类的问题,但在正文中您说:

I want to let user input text in any language in the world and others get the access.

因此,我假设这就是您的要求.需要澄清的是,归类会影响MySQL如何相互比较字符串,但这并不是最终打开存储Unicode字符的可能性.

为了存储,您需要确保正确定义了字符集. MySQL允许您在列级别指定字符集和排序规则值,但也允许您在表和数据库级别指定默认值.通常,我建议在数据库和表级别上设置默认值,并在定义列时让MySQL处理其余部分.请注意,如果已经存在带有不同字符集的列,则需要研究对其进行更改.根据您用来与MySQL通信的内容,您可能还需要指定一个字符编码以用于连接.

请注意,utf8mb4是所使用字符集的绝对必需,请勿仅使用utf8.您将无法存储使用UTF-8占用4个字节的unicode字符,例如emoji字符.

至于要使用的排序规则,我确实没有建议,因为它取决于您的目标是速度还是准确性.有大量的信息可以涵盖其他答案中的主题.

标签:unicode,utf-8,collation,mysql
来源: https://codeday.me/bug/20191119/2032362.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有