我正在使用mysql数据库,innoDB和MyISAM这两个引擎。我想看看utf8和latin1之间的不同,所以我做了一个测试:
代码在网站上:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
数据库表上字段的属性:
latin1_swedish_ci
然后我在网站上输入中文单词“我爱你”和“ĀāĂ㥹ĆćĈ”,然后点击提交按钮,php和mysql将单词存入数据库。并且mysql从数据库中检索值并显示在网站上。
输出:
网站显示“我爱你”和“ĀāĂ㥹ĆćĈ”
数据库表字段显示“æ'ç±ä½”和“Â?”。
我测试了以下所有变化:
1)将网站的元数据更改为latin-1
,将表格字段的属性更改为utf-8
2)将网站的元数据更改为utf-8
,将表格字段的属性更改为utf-8
3)将网站的元数据更改为latin-1
,将表格字段的属性更改为latin-1
但输出仍然相同,输出没什么变化。为什么呢?
我不能用那种方法测试吗?如果是这样,我如何测试utf-8
和latin-1
之间的差异?
如何使数据库表字段显示“我爱你”和“ĀāĂ㥹ĆćĈ”字样? / p>
我开发了像Facebook.com这样支持多种语言的社交网站,我应该将utf-8
用于数据库字段吗? utf-8
的缺点是每个字符需要3个字节,但latin-1
只占用1个字节。要保存存储空间,最好使用latin-1
,但如果我使用latin-1
而不是utf-8
,我不确定将来会出现什么问题。谁能给我一些关于如何决定使用哪个字符集的建议?
答案 0 :(得分:1)
是的,如果你要支持其他语言,UTF-8是你最好的选择。
答案 1 :(得分:1)
1)您可能需要注意的是,如果不使用某种软件,您无法真正达到数据库记录的高峰,这可能会给展会带来一系列问题。 Phpmyadmin有一个字符集配置选项,软件产品有一个内部假定的字符集,甚至命令提示符窗口都有一个代码页。重要的是确保从数据库中准确地返回您放入其中的内容,而不是如何将其存储在表空间中。使用“SET NAMES字符集”通过整个连接保持一致的字符集。
2)UTF-8显然是世界的发展方向,因为它可以运行,因为它可以存储您可能遇到的每种语言(书写系统)中的字符。使用latin-1,你可以删除所有不是来自西欧的语言 - 这不仅意味着中文和西里尔文和希腊语/希伯来文等,还有东欧,土耳其和许多其他基本上使用拉丁字母和其他地方的地方特别加上了一封信。
3)UFT-8是未来大多数未来最有效的解决方案。
4)对于单语应用程序来说,从一开始就做正确的事情(那将是UTF-8),而不是在以后转换你的多个gygabyte表时,更安全(和更安全),当你发现你需要更多。没有人必须做这样的事情喜欢这种经历。 5)磁盘空间是一种商品,白天更便宜 - 如果你要做'社交',你应该只需要一大堆(如果这个东西飞得你还是需要它)并且忘了它,还有其他问题会比磁盘更快地咬你:加载性能,访问并发性,集群和多个服务器的负载平衡。我不记得单个社交网络因为这3个字节而感叹哀悼。